pin*_*ksy 5 javascript maps google-maps google-maps-api-3 google-maps-markers
我需要在地图div的固定像素位置放置一个标记.要实例化标记,您需要一个LatLng.我知道fromDivPixelToLatLng()是从像素坐标转换为LatLng的方法,但我不能让它表现得一致.
我在http://www.pinksy.co.uk/newsquare/overlaytest.html上发布了一个简单的问题示例.单击地图以200px/200px放置标记.拖动地图并再次单击.我期待每次将标记放置在200px/200px,但事实并非如此.
首先,我像往常一样设置地图,在600px乘300px 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);
Run Code Online (Sandbox Code Playgroud)
然后我创建一个叠加层:
var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
Run Code Online (Sandbox Code Playgroud)
为了测试fromDivPixelToLatLng(),我在地图上创建了一个点击事件,它试图在200像素/ 200像素的像素位置放置一个标记.无论你在哪里拖动地图,我都希望标记总是放在200px/200px:
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
});
});
Run Code Online (Sandbox Code Playgroud)
但是,拖动地图,您会看到标记并不总是放在200px/200px处.有任何想法吗?
谢谢!
经过实验,我发现 fromContainerPixelToLatLng() 就是我正在寻找的。为了其他人的利益,我在 http://www.pinksy.co.uk/newsquare/overlaytest2.html上发布了一个示例。
(郑重声明,我仍然不确定为什么 fromDivPixelToLatLng 的行为方式如此,但没关系!)
| 归档时间: |
|
| 查看次数: |
5142 次 |
| 最近记录: |