電子書籍の厳選無料作品が豊富!

初心者です。。

見よう見まねで何とか下記まではできました。



function load() {

if (GBrowserIsCompatible()) {

var map = new GMap2(document.getElementById("map")); //地図を作成
map.setCenter(new GLatLng(35.969115,139.372559), 8); //地図を表示((中心の緯度,経度),縮尺)
map.addControl(new GSmallMapControl()); //マップコントローラを付ける
map.addControl(new GMapTypeControl()); //マップタイプコントローラを付ける
map.addControl(new GScaleControl()); //スケールコントローラを付ける
map.removeMapType(G_HYBRID_MAP); //マップタイプコントローラから地図+写真を削除する
map.enableScrollWheelZoom(); //マウスホイールによるズーム処理を有効化 //マーカー追加プログラム

function addMarker(address, html) {
var geocoder = new GClientGeocoder();
geocoder.getLatLng(address, function(point) {
var marker = new GMarker(point); //マーカー生成
GEvent.addListener(marker,"mouseover",function(){marker.openInfoWindowHtml(html);});//マーカーにマウスが当たると情報ウィンドウを表示する
map.addOverlay(marker); //マーカーをオーバレイ表示する
});
}

//マーカー追加
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
addMarker("住所",'<p>html</p>');
}
}



10個以上あるとマップ上に表示されないようです。。。

最終的に100件200件になると思うので、
すべて表示させたいのですが・・・


何か方法はないでしょうか。。
具体的に教えていただけると助かります。。

A 回答 (2件)

ご提示のコードはV2のものだと思いますが、現在google map APIはV3に移行しているようですので、これから作成なさるのならV3を利用した方がよろしいかと。

(keyも不要になったみたいですし)
(↓)に「V2はGoogle の廃止ポリシーにより正式に廃止されました」の記載があります。
http://code.google.com/intl/ja/apis/maps/documen …

>10個以上あるとマップ上に表示されないようです。
V3で簡単な実験をしてみましたが、連続的にジオコードサービスにリクエストすると、10回目くらいから「OVER_QUERY_LIMIT」となってしまうようです。
(V2で同じことになるのかは確認してませんが、似たような制限があるのではと推測)
時間当たりのアクセス数制限がかけてあるのか(そのあたりは解説されてないみたいですが)、ウェブサービスの方には2500件/日のような制限についての情報が記されているようです。
http://code.google.com/intl/ja/apis/maps/documen …

簡単にテストしてみたところ、連続だと11件程度、約0.5秒おきのリクエストで20件程度、0.8秒おきだと50件程度でリミットになるようです。
1秒おきにしてみたらば100件まではクリアできましたが、これだけで100秒以上の時間がかかってしまうので、何秒かおきに10件ずつまとめてリクエストをした方が結果的に早いのかもしれません。(これ以上は試してしませんので不明です)

とはいうものの、ご質問の内容からすると表示する毎にジオコーディングする必要はなさそうなので(仮に連続で可能だとしても時間がかかる要因となる)、#1様の回答の例にもあるように、表示するデータは事前にまとめてLatLngデータに変換しておいた方がよろしいかと思われます。
(データの追加があるときは、追加の際にLatLngを取得してデータに加えておく)
そうすることで、表示する際にはジオコーディングが不要となりリミットを気にする必要はなくなりますし、当然ながら処理全体の効率もよくなると考えられます。


>何か方法はないでしょうか
どうしてもこのままで行ないたいのであれば、上記のようにリクエストの間隔を置いて、10件ずつまとめて行なうとかのような方法になろうかと…(200件程度だと、どのようにするのが一番速いのかは不明)
    • good
    • 0

手前味噌ですが


http://map.jlamp.net
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

すいません、、
知識が乏しく、あまりよくわかっていないのですが、
住所や吹き出しに表示させたい情報は、
どこに入れるもんなのでしょうか・・

お礼日時:2011/08/11 00:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!