多个google.maps.Marker显示为一个标记(叠加位置)

时间:2014-06-18 09:14:42

标签: javascript google-maps google-maps-api-3

我正面临着google.maps.Markera的原型对象的奇怪问题。

 ...
 function WMarker(config) {
   var cc = {
     position: new google.maps.LatLng(...),
     map: map,
   };
   google.maps.Marker.call(this, cc);
 }
 WMarker.prototype = new google.maps.Marker();
 WMarker.constructor = WMarker;

 var m1 = new WMarker({...});
 var m2 = new WMarker({...});
 ...
尽管位置不同,

仍会以仅显示一个(最新)标记结束。 你有任何提示,在哪里寻找解决这个问题的方法吗?

我检查了什么:

  • 我可以创建多个纯google.maps.Marker(...)
  • 在初始化WMarker
  • 之间加上一些延迟
  • 当我调用m2.setMap(null)时,我可以看到m1标记。

链接到完整示例:http://pastebin.com/hSSCyRcP     - 如果它以超时运行,它将仅删除第一个标记

非常感谢,

1 个答案:

答案 0 :(得分:0)

在我发现的所有论坛中挖掘后,这是一个错误。

从这个链接: https://code.google.com/p/gmaps-api-issues/issues/detail?id=6447#c16

解决此问题的解决方案是: ....

WMarker.prototype = new google.maps.Marker();

WMarker.constructor = WMarker;

function inherits(childCtor, parentCtor) { 
        / @constructor */ 
        function tempCtor() {}; 
        tempCtor.prototype = parentCtor.prototype; 
        childCtor.superClass_ = parentCtor.prototype; 
        childCtor.prototype = new tempCtor(); 
        / @override */ 
        childCtor.prototype.constructor = childCtor; 
} 


inherits(WMarker, google.maps.Marker);