我正在使用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并执行我需要的注释,但由于视图更改,用户将无法再看到它。
答案 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());
});