F.Ko-Jiの「一秒後は未来」

複数のGoogle Mapsをジオコーディングして貼り付けるメモ

・head部分でGoogle Maps APIとGoogle AJAX Search APIのスクリプトをインクルード。

・地図を貼り付けたい部分に<div id=”sample1″></div>のようなタグを書く。

・次のようなJavaScriptを外部ファイルに記述してhead部分でインクルード。

var GEOCODING = function(){};
GEOCODING.prototype.zoom = 15;
GEOCODING.prototype.map = "";
GEOCODING.prototype.options = {};
GEOCODING.prototype.init = function(id, width, height, text, address) {
 var self = this;
 self.options.size = new GSize(width, height);
 self.map = new GMap2(document.getElementById(id), self.options);
 self.map.addControl(new GSmallMapControl());
 self.map.addControl(new GMapTypeControl());
 self.geocoding(text, address);
}
GEOCODING.prototype.geocoding = function(text, address) {
 var self = this;
 var glocal = new GlocalSearch();
 if (self.map.isLoaded()) {glocal.setCenterPoint(self.map);}
 glocal.setSearchCompleteCallback(null, function() {
  if (glocal.results.length > 0) {
   var lat = parseFloat(glocal.results[0].lat);
   var lng = parseFloat(glocal.results[0].lng);
   self.map.setCenter(new GLatLng(lat, lng), self.zoom);
   var marker = new GMarker(new GPoint(lng, lat));
   self.map.addOverlay(marker);
   marker.openInfoWindow(document.createTextNode(text));
  }
 });
 glocal.execute(address);
}

・</body>タグの直前(もしくはprototype.jsのEvent.observe(window, “load”, funtion(){…})を使ってもよい)で読み込むJavaScriptファイルを用意し、以下のような処理を書く。

// 配列にしておけば同一ページに複数の地図を埋め込める
var geo_id = [];
var geo_width = [];
var geo_height = [];
var geo_text = [];
var geo_address = [];

geo_id.push("sample1");
geo_width.push(350);
geo_height.push(280);
geo_text.push("サンプルです");
geo_address.push("甲子園");

geo_id.push("sample2");
geo_width.push(300);
geo_height.push(300);
geo_text.push("これもサンプルです");
geo_address.push("六本木ヒルズ");

if (geo_id.length > 0) {
 for (var i = 0; i < geo_id.length; i++) {
  if (document.getElementById(geo_id[i])) {
   var geocoding = new GEOCODING();
   geocoding.init(geo_id[i], geo_width[i], geo_height[i], geo_text[i], geo_address[i]);
  }
 }
}

・地図を追加したいときは、id付きのdivタグをページに埋め込んで、geo_idなどの配列にデータをpushするだけ。

ただ、マーカーの吹き出しが1個しか開かない場合がある。原因不明。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など