我想在点击标记时自己创建js弹出窗口。 因为我在API中没有发现任何相关内容,我只是 思维 得到鼠标的xy pos,而不是“画”我的div。
找到这个例子:
Get Position of Mouse Cursor on Mouseover of Google Maps V3 API Marker
但是当我做console.log(marker.getPosition())总是0,0。
任何人都有自己的自定义弹出窗口,并且可以给我一个提示怎么做 这个? Shoud我使用“fromLatLngToContainerPixel”或者是另一个 优雅的方式?
这里有一些代码。 _spots是一个json对象。
for (var i = 0; i <= _spots.length; i++) {
var myLatLng = new google.maps.LatLng(_spots[i].lat, _spots[i].long);
var spotMarker = new google.maps.Marker({
position: myLatLng,
map: map,
title: _spots[i].name,
animation: google.maps.Animation.DROP,
icon: image,
street: _spots[i].street,
zipcode: _spots[i].zipcode,
info: _spots[i].info,
});
markersArray.push(spotMarker);
google.maps.event.addListener(spotMarker, 'click', function() {
console.log(this);
alert(spotMarker.getPosition()); // -> at this point I get 0,0
var projection = overlay.getProjection();
var pixel = projection.fromLatLngToContainerPixel(spotMarker.getPosition());
console.log(pixel);
});
}
祝你好运, SV
答案 0 :(得分:0)
for (var i = 0; i <= _spots.length; i++)
这必须是:
for (var i = 0; i < _spots.length; i++)
否则最后一个循环将指向非法偏移。
但是,您应该使用
alert(this.getPosition());
..访问点击的标记。
spotMarker将始终返回相同的标记(最后一个已创建的标记)