解決済みの質問
マップとストリートビューを並べて表示させるページを作成しています。
マップをクリックしたら、その箇所のストリートビューを表示させたいのですが、マーカーをクリックすると NULLまたはオブジェクトではありません。エラーがでてしまいます。
マーカーにオブジェクトが含まれてないから等かんがえていますが・・・。
var map;
var panorama;
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GMapTypeControl());
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(35.658517, 139.745493), 16);
GEvent.addListener(map, "click", moveCenter);
var street = new GStreetviewOverlay();
map.addOverlay(street);
var option = { latlng:spoint };
var scontainer = document.getElementById("street");
panorama = new GStreetviewPanorama(scontainer, option);
var spoint = new GLatLng(35.658517, 139.745493);
panorama.setLocationAndPOV(spoint);
}
}
function moveCenter(overlay, point){
map.panTo(point);
panorama.setLocationAndPOV(point);
panorama.show();
}
ちなみに下記のページを参照しています。
http://www.ajaxtower.jp/googlemaps/gstreetviewpanorama/index3.html
これに現状下記のようにマーカーをつけています。
marker = new GMarker(map.getCenter()); // マーカーコントロール作成
map.addOverlay(marker); // マーカー表示
GEvent.addListener(marker,"mouseover",onMarkerMouseMove); // マーカークリックイベント設定
marker.openInfoWindowTabsHtml(mtabs); // フキダシ表示
-----
function onMarkerMouseMove(){// マーカーにマウス移動
marker.openInfoWindowTabsHtml(mtabs); // フキダシ表示
}
なにか他に参考になるページか、マーカークリック時のストリートビューのエラー回避で参考になるものがあればうれしいです。
投稿日時 - 2008-12-17 17:36:55
<補足>
作っていて気づいたのですが、 GStreetviewOverlayを地図に
かぶせていると、他のオーバーレー(マーカー等)の座標の
取得や、操作がうまくいかないみたいです。
今回のサンプルは、マーカーから自身の座標を返させているので
すが、なぜか、最初に初期配置した時はその座標がストリートビュー
で処理されません。マーカーをドラッグして動かすと次から、その
座標がストリートビューで処理されました。タイムラグが原因なのか
もしれません。
マーカーの位置が固定で決まっているなら、その座標を直に
GStreetviewPanoramaにセットすれば、最初からマーカークリック
で、ストリートビューが表示されました。
ともかく、ストリートビューサービスは、日本で始まってから数ヶ月
ですから、いろいろ実験してみない事には....
と...。
投稿日時 - 2008-12-18 16:28:42
お礼
なるほど・・・
とりあえず初期のマーカーの位置は固定させて、panoramaセットさせたいと思います。
参考のページありがとうございました。
大変参考になりました。色々勉強になります。
また何かあればよろしくお願いします。
投稿日時 - 2008-12-19 09:40:51
1人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(3件中 1~3件目)
No1,2です。
一応うまくいきました。
<script type="text/javascript" charset="utf-8">
<!--
var map;
var panorama;
var scontainer;
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GMapTypeControl());
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(35.658517, 139.745493), 16);
var street = new GStreetviewOverlay();
map.addOverlay(street);
scontainer = document.getElementById("street");
var spoint = new GLatLng(35.658517, 139.745493);
marker = new GMarker(map.getCenter(),{draggable: true});
map.addOverlay(marker);
GEvent.addListener(marker,"click",function(){
marker.openInfoWindowHtml("XXXXXX");
//marker.openInfoWindowTabsHtml(mtabs);
var point = marker.getLatLng();
map.panTo(point);
panorama = new GStreetviewPanorama(scontainer,{latlng:point});
});
GEvent.addListener(marker,"mouseover",function(){
marker.openInfoWindowHtml("XXXXXX");
//marker.openInfoWindowTabsHtml(mtabs);
});
}
}
// -->
</script>
です。
マーカークリックでも、マウスオーバーでも吹き出しがでるので
ちょっとうっとしいです。マウスオーバーの方はけしてもいいかも
マーカーを青い線の上にドラッグしてクリックすると、
ストリートビューが出ます。
青い線の上でないと出ません。
参考URLを参考に作りました。
参考URL:http://googlemaps.googlermania.com/map_example_25.html
投稿日時 - 2008-12-18 15:27:49
No1です。先の回答取り消します。
検証してみたら、StreetView表示状態だと、うまくいきませんでした。
もっと調べてみます。
GEvent.addListener(marker,"click",function({
はケアレスミスです。)抜けてました。正しくは
GEvent.addListener(marker,"click",function(){
ですね
投稿日時 - 2008-12-18 14:08:25
お礼
ありがとうございます。
私もへんに思い、HPを調べて、()をつけくわえました☆
先程の件は、下記に補足させていただきました。
投稿日時 - 2008-12-18 14:13:09
マーカーにマウス移動したら、フキダシ表示は、↓
GEvent.addListener(marker,"mouseover",function({
marker.openInfoWindowTabsHtml(mtabs);
});
マーカークリックしたら、フキダシ表示は、↓
GEvent.addListener(marker,"click",function({
marker.openInfoWindowTabsHtml(mtabs);
});
マーカークリックしたら、フキダシ表示&ストリートビュー表示は、↓
GEvent.addListener(marker,"click",function({
marker.openInfoWindowTabsHtml(mtabs);
var point = marker.getLatLng();
map.panTo(point);
panorama.setLocationAndPOV(point);
panorama.show();
});
mapをクリックした時、マーカーをクリックした時、等の
処理を整理して、プロシジャーを配置してみてください。
投稿日時 - 2008-12-18 11:55:29
お礼
ありがとうございます。
参考にさせていただき、いろいろ試したところ、
マーカーをクリックしたら、座標を取得できないことが問題とわかりました。
地図上クリックでしたら、座標がとれてたのですが、マーカーや噴出し上をクリックすると、undefinedという内容がかえっていて、その位置を表示できないのが問題でした。
この場合、if(point = undefined)というように作ればいいのでしょうか?
ともかくありがとうございました。
投稿日時 - 2008-12-18 14:11:31