Android Google Maps Utility - 更新群集标记位置

时间:2017-01-09 10:07:41

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

我想更新我的标记位置。目前我正在移除一个项目并立即将其添加回新位置,但我不确定这是正确的方法。我想要做的是将此标记位置更新为新值而不删除/添加它。有可能吗?

我尝试了以下内容:

var cluster_item = iterator.next();
var marker = dis.cluster_renderer.getMarker(cluster_item);
marker.setPosition(new dis.maps.model.LatLng( 0, 0 ));

..但它就像一个临时集,一旦我缩小了集群,其他标记重新渲染,并且位置被设置回原来的位置。

当前代码:

// Updates all items
var items = dis.cluster_manager_algorithm.getItems();
var iterator = items.iterator();
//while ( iterator.hasNext() ) {
if ( iterator.hasNext() ) {
    var cluster_item = iterator.next();

    dis.cluster_manager.removeItem(cluster_item);

    var item = new dis.clustering.ClusterItem({
        //rotation: marker.rotation,
        getPosition: function () {
            return new dis.maps.model.LatLng(new_position.latitude, new_position.longitude);
        },
        userData: {imei: "some_imei"}
    });
    dis.cluster_manager.addItem(item);

    // update view
    dis.cluster_manager.cluster();
}

1 个答案:

答案 0 :(得分:0)

让我们举一个简单的例子,在我的位置上添加标记。无论何时我的位置发生变化,标记都会在该位置上移动。 -

 @Override
        public void onLocationChanged(Location location) {
           marker.setPosition(new LatLng(location.getLatitude, location.getLongitude ));
        }

现在,只要您使用marker.setPosition(latlng),就可以使用locationList<LatLng>

修改 对于批量标记,请使用。假设您有具有LatLng @Override public void onMapReady(GoogleMap map) { for(int i=0 ;i<locationList.size();i++){ map.addMarker(new MarkerOptions() .position(locationList.get(i)) .title("Marker").icon()); }} 的arraylist。

i

如果您想按照要求使用 ClusterMarker ,您可以找到简单的教程here。此外还有一个演示应用here