ストリートビューでマーカークリックするとエラー

解決済みの質問

ストリートビューでマーカークリックするとエラー

マップとストリートビューを並べて表示させるページを作成しています。
マップをクリックしたら、その箇所のストリートビューを表示させたいのですが、マーカーをクリックすると 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

QNo.4563153

困ってます

質問者が選んだベストアンサー

<補足>
作っていて気づいたのですが、 GStreetviewOverlayを地図に
かぶせていると、他のオーバーレー(マーカー等)の座標の
取得や、操作がうまくいかないみたいです。
 今回のサンプルは、マーカーから自身の座標を返させているので
すが、なぜか、最初に初期配置した時はその座標がストリートビュー
で処理されません。マーカーをドラッグして動かすと次から、その
座標がストリートビューで処理されました。タイムラグが原因なのか
もしれません。
 マーカーの位置が固定で決まっているなら、その座標を直に
GStreetviewPanoramaにセットすれば、最初からマーカークリック
で、ストリートビューが表示されました。
 ともかく、ストリートビューサービスは、日本で始まってから数ヶ月
ですから、いろいろ実験してみない事には....

と...。

投稿日時 - 2008-12-18 16:28:42

お礼

なるほど・・・
とりあえず初期のマーカーの位置は固定させて、panoramaセットさせたいと思います。

参考のページありがとうございました。
大変参考になりました。色々勉強になります。

また何かあればよろしくお願いします。

投稿日時 - 2008-12-19 09:40:51

ANo.4

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(3件中 1~3件目)

ANo.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

ANo.2

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

ANo.1

マーカーにマウス移動したら、フキダシ表示は、↓
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

あわせてチェックしたい
  • μ zoom PANORAMA のスポットAF ...
  • Googleストリートビューの写真を切り替えるスクリプトがIE6だけ動作しない原因を知りたいです。 ...
  • グーグルマップについて教えてください。 ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら