地域の店舗情報を地図で表示することが目的で
店舗情報はMySQLを利用し管理しています。
googlemap apiを利用して、表示エリアを取得
↓
phpに情報を渡し、そのエリア範囲内のデータをxmlで生成する。
↓
xmlを解析。表示。
という流れで利用を考えており、ここまでの情報は見つけることができました。
ココで、問題がでまして、ビルなどにテナントを構える場合
同じ住所に複数店舗が存在することがあります。
その場合、同じ住所内のひとつの店舗しか、infoWindowに出てこないのです。
http://i-ll.jp/test/map/map.html
上記テストでサンプルをとってきて変えてみたのですが
赤坂見附と赤坂見附2が同じ経度緯度になっています。
マーカーをクリックすると、「赤坂見附2」の情報だけが表示されます。
サイドバーの情報からクリックすると個別に表示されます。
これを、マーカー、サイドバーの情報どれをクリックしても
ーーーーーーーーーーーーーーーー
|赤坂見附 |
|G05 Akasaka-mitsuke |
| ------------ |
|赤坂見附2 |
|G65 Akasaka-mitsuke |
| ------------ |
上記のように、infoWindowに二つの情報を続けて入れたいのですが
どうしたらよいでしょうか。
データーを引っ張るので、XMLを調整すればというのは厳しいです。
zpointが関係しているんだろうということは漠然とわかるのですが
具体的にどうしたらよいか、参考サイトやヒントなど教えて頂けないでしょうか?
その場合は、
「PHP側で同じ緯度経度だったら情報ウィンドウの内容をまとめる」
みたいな処理をするのが普通ですよ。たぶん。
ご返信ありがとうございます。
googlemapapiのことばかり、考えていてXMLファイルを生成するphp側で
操作することを考えておりませんでした。
それも一つの方法として、行ってみたいと思います。
が、もしajax側、javascript側での操作方法をご存知の方がいらっしゃいましたら
参考までに教えていただけたら幸いです。
サンプルを含め、ありがとうございます。
並べ替えorderby も考えて作っていきたいと思います。
ありがとうございました。
> for (var i=0; i<obj.data.length; i++) {
> for (var j=i+1; j<obj.data.length; j++) {
> if (Math.abs(obj.data[i]-obj.data[j])<=Math.pow(10,-5)) {
> //この中でデータを合一します}
> }
> }
XMLを読み込んで表示したいのですが具体的に教えていただけますと助かります。
downloadUrl("data.xml", function(data) {
var markers = data.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
for (var j = i+1; j < markers.length; j++) {
if (Math.abs(markers[i]-markers[j]) <= Math.pow(10,-5)) {
var latlng = new
google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(markers[i].getAttribute("name"),
latlng);
}}}
});
}
上記ではマーカーが表示されなくなってしまいます。
コードはこれで合ってますでしょうか?
かわりにサンプルを見つけましたので、net arukoさんの参考になればと思い、報告します。
http://gmaps-samples.googlecode.com/svn/trunk/manymarkers/markerhash.html
これを元に、v3用のファンクションに書き換えて試してみたいと思います。