我在谷歌地圖中的自定義標記有問題。我會盡力解釋。如何從谷歌地圖V2中刪除CustomMarker android
我有一些標記,並且我做了一個Asyntask,如果必要的話,它將它聚類,返回一個LinkedHashMap<Point, ArrayList<MarkerOptions>> clusters
我擁有這些簇的地方。每個位置代表一個集羣(它可能有1個標記集羣)
當我拿到這個名單,我的集羣添加到地圖:
這裏就是我所說到Clusterizer活動。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.getUiSettings().setMyLocationButtonEnabled(true);
CameraUpdate camUpd1 = CameraUpdateFactory.newLatLngZoom(new LatLng(41.40520680710329,2.191342011603923),MAP_ZOOM_LEVEL);
map.animateCamera(camUpd1);
loadMarkers();
map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
if(position.zoom != oldZoom) {
try {
clusters = null;
map.clear();
Clusterizer.setContext(getApplicationContext());
clusters = Clusterizer.clusterMarkers(map, markers, INTERVAL);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
oldZoom = position.zoom;
}
});
}
private void loadMarkers() {
markers.add(new Marker(41.40520680710229,2.191342011603823,"Glorias1","Centro Comercial",true).getMarker());
markers.add(new Marker(41.40520680710229+0.0005,2.191342011603823-0.0005,"Glorias11","Centro Comercial",true).getMarker());
markers.add(new Marker(41.40520680710229+0.0005,2.191342011603823+0.0005,"Glorias111","Centro Comercial",true).getMarker());
markers.add(new Marker(41.40520680710229-0.0005,2.191342011603823+0.0005,"Glorias1111","Centro Comercial",true).getMarker());
markers.add(new Marker(41.40520680710229-0.0005,2.191342011603823-0.0005,"Glorias1111","Centro Comercial",true).getMarker());
}
而且,在Asyntask後計算集羣(它確定)的postExecute方法,做到這一點:
@Override
protected void onPostExecute(
LinkedHashMap<Point, ArrayList<MarkerOptions>> clusters) {
map.clear();
for(Point point: clusters.keySet()) {
ArrayList<MarkerOptions> markersForPoint = clusters.get(point);
MarkerOptions mainMaker= markersForPoint.get(0);
//If the point (taken from cluster, has more than 1 markerOption, means that has been clusterized, so It have to be printed with the //modified canvas that contains the number of markers clusterized)
if(markersForPoint.size() > 1) {
mainMaker.title(Integer.toString(markersForPoint.size()));
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(80, 80, conf);
Canvas canvas1 = new Canvas(bmp);
Paint color = new Paint();
color.setTextSize(35);
color.setColor(Color.BLACK
canvas1.drawBitmap(BitmapFactory.decodeResource(context.getResources(),
R.drawable.pin), 0,0, color);
canvas1.drawText("",10,40,color);
canvas1.drawText(Integer.toString(markersForPoint.size()), 10, 40, color);
mainMaker.icon(BitmapDescriptorFactory.fromBitmap(bmp));
mainMaker.anchor(0.5f, 1);
}
map.addMarker(mainMaker);
}
}
而這裏的問題...
如果它的集羣有沒問題,它表明沒問題,但是當我放大cluster list
這沒關係,但標記不是
這就是看到羣集何時「聚集」,何時被隱藏以不聚集
我該如何解決它?我在添加標記前清潔地圖...
謝謝大家!
集羣:
未加入羣集
目前尚不清楚你要求什麼。 – 2013-05-09 23:28:59
@MaciejGórski我嘗試用其他方式解釋.. ^^。當我在地圖上放大或縮小時,如果要關閉標記(在屏幕上以像素爲單位),我會將要關閉的那個(例如70像素)聚簇。當標記聚集時,我不使用默認的GMap標記,我使用了一個自定義標記,用代表的標記數「繪製」。但是當我放大時(集羣消失,現在可以看到5個標記(例如),表示集羣的標記仍然是自定義的,當應該是默認標記時 – Shudy 2013-05-10 05:25:31