我想更新我的标记位置。目前我正在移除一个项目并立即将其添加回新位置,但我不确定这是正确的方法。我想要做的是将此标记位置更新为新值而不删除/添加它。有可能吗?
我尝试了以下内容:
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();
}
答案 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