我需要在地圖div的固定像素位置放置一個標記。要實例化標記,您需要一個LatLng。據我所知,從DIVPixelToLatLng()是從像素座標轉換爲LatLng的方式,但我無法使其表現一致。Google Maps API V3 fromDivPixelToLatLng不一致
我已經發布了一個簡單的例子,我的問題在http://www.pinksy.co.uk/newsquare/overlaytest.html。點擊地圖放置一個200px/200px的標記。拖動地圖並再次單擊。我期待每次都會將標記放置在200px/200px,但事實並非如此。
首先,我設置了地圖像往常一樣,在一個600px的300像素的div:
var london = new google.maps.LatLng(51.501904,-0.130463);
var mapOptions = {
zoom: 15,
center: london,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
然後,我創建一個覆蓋:
var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
要測試fromDivPixelToLatLng(),我創建了一個點擊地圖上的事件,它嘗試在像素位置200px/200px處放置標記。無論在何處拖動地圖的,我期待的標記始終被放置在200像素/ 200像素:
google.maps.event.addListener(map, 'click', function(event) {
var pixelLatLng = overlay.getProjection().fromDivPixelToLatLng(new google.maps.Point(200,200));
var marker = new google.maps.Marker({
position: pixelLatLng,
map: map
});
});
然而,拖動地圖,你會看到標記並不總是放置在200像素/ 200像素。有任何想法嗎?
謝謝!
有下一個很好的解釋: https://groups.google.com/forum/#!topic/google-maps-api/L2UJJp10VRw – kaskader