【问题标题】:Having problems adding markers into Google Maps clusterer将标记添加到 Google Maps clusterer 时遇到问题
【发布时间】:2012-02-08 18:01:04
【问题描述】:

我在将标记添加到 Google 地图的标记聚类器中时遇到问题。 Firebug 返回错误:

错误:调用时属性值无效:[object Object]' 方法:[nsIDOMEventListener::handleEvent]

标记是使用 JavaScript 和 PHP 混合创建的:

// loop starts here.......

    var randLatLng = new google.maps.LatLng( <?php echo $lat; ?>, <?php echo $lon; ?> );
    var marker_<?php echo $gauging["Gauging"]["id"]; ?> = new google.maps.Marker({
        map: MyMap.map,
            title: '<?php echo $gauging["Gauging"]["identification"]; ?>',
            position: randLatLng,
            draggable: false, 
            clickable: true, 
            icon: '/img/markers/yellow_Marker.png',
            myId: 'gp_<?php echo $gauging["Gauging"]["id"]; ?>'
        });
    myMap.markers.push(marker_<?php echo $gauging["Gauging"]["id"]; ?>);

// loop ends here .......

var markerYellowCluster = new MarkerClusterer(myMap, yellowMarkers);

...这段代码可以很好地创建所有标记,但不会将它们添加到集群器中。

你能给我一些建议吗?

Tnx in adv!

更新:也许这会有所帮助 - alert(yellowMarkers);显示警报窗口,其中:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

【问题讨论】:

  • 你能发布 php 创建的输出吗?您不必只发布一个标记的整个列表
  • 用php我只添加标记属性,它工作正常。问题是我无法将创建的标记分组到标记聚类器中。你认为php代码的哪一部分对你有帮助?

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


【解决方案1】:

当我以前这样做时,我的代码如下所示:

var markerCluster = new MarkerClusterer(map, markers, {
            zoomOnClick: true,
            averageCenter: true
        });

yellowMarkers 是什么?那不应该是 myMap.markers 吗?

【讨论】:

  • 在我的例子中,可变的黄色标记是你的可变标记。就像我的变量 myMap 和你的 map 一样。我这边一定有一些小错误......你能检查我的问题的更新部分吗?
  • 如果您粘贴的代码是您正在使用的代码,那么邓肯说 yellowMarkers 似乎不适合使用的集合是正确的。您显然已经在代码中的某个位置填充了它,但是您发布的代码没有显示在哪里。它向您展示了填充 myMap.markers。所以试试 var markerYellowCluster = new MarkerClusterer(myMap, myMap.markers);
  • 另外,在某一时刻,您引用了 MyMap.map,然后又引用了 myMap.markers。 Javascript 区分大小写。并且您只将 myMap 传递给标记聚类器。你的意思是传递 myMap.map 吗?
【解决方案2】:

我同意上面的一些 cmets 关于你的变量的命名,但我想在这里添加另一个选项。

您可以在开始添加任何标记之前初始化 markerclusterer:

var markerYellowCluster = new MarkerClusterer(myMap);

然后代替调用:

myMap.markers.push(marker_<?php echo $gauging["Gauging"]["id"]; ?>);

您可以简单地在markerclusterer对象本身上调用“addMarker”方法,它会同时将marker添加到地图以及marker clusterer:

markerYellowCluster.addMarker(marker_<?php echo $gauging["Gauging"]["id"]; ?>);

【讨论】:

    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2016-12-22
    • 2012-12-02
    相关资源
    最近更新 更多