Google街景位置

时间:2012-08-20 21:42:12

标签: javascript google-maps google-maps-api-3 google-maps-markers google-street-view

我正在使用Google StreetView,并希望允许用户放置标记。

例如,如果它只是Google Map(而不是StreetView),我可以这样做:

google.maps.event.addListener(map, 'click', recordPosition);

function recordPosition(e) {
    var marker = new google.maps.Marker({
                    position : e.latLng,
                    map : map,
                    icon : cafeMarkerImage,
                    title : 'Centre of the universe ' + numberOfClicks
                });     

    numberOfClicks++;
}

当用户点击时,cafeMarkerImage被置于鼠标光标下。

将这些标记添加到地图后,切换到StreetView会正确显示它们...但是,我想将它们添加到StreetView中,而不是地图视图。

但是,在StreetView中,'click'事件不可用。

我希望在鼠标移动过程中找到StreetView中显示的“煎饼”中心的latLng - 一旦用户点击。


Odi's answer让我在那里找到了一些方法,但我仍然陷入困境:点击让我获得了街景POV的当前位置,但随后它立即变为我点击的位置。因此,如果我在点击上获取POV并执行我需要的注释,但由于视图更改,用户将无法再看到它。

1 个答案:

答案 0 :(得分:1)

您可以使用StreetViewPanorama layer,它为您提供相应的事件和数据。

我想你想要的是position_changed事件。 See this good example如何使用事件并检索相应的数据。

简而言之:

var start = new google.maps.LatLng(47.500613, 8.724575);
var panoramaOptions = {
    position: start,
    pov: {
         heading: 20,
         pitch: 0,
         zoom: 1
    },
      visible: true
};
var panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions);

google.maps.event.addListener(panorama, 'position_changed', function() {
    console.log(panorama.getPosition().toString()); 
});​