【问题标题】:Add a circle around the marker, when marker becomes visible当标记变得可见时,在标记周围添加一个圆圈
【发布时间】:2015-08-05 16:38:59
【问题描述】:

目前我正在使用 Google Maps Android API Utility 进行集群,但是当它从集群中可见/呈现时,我没有找到在标记周围添加一个圆圈的方法。我希望每个标记都有一个圆圈。 Android 地图扩展库中是否有任何方法可以实现这一点?

这是集群时

当集群呈现当前行为时

期望的行为

【问题讨论】:

  • 你能贴出你要找的photoshop图片吗?
  • @Shanmugapriyan 我编辑了我的问题

标签: java android google-maps android-maps-extensions


【解决方案1】:

我认为这个集群库可以帮助你。 Android 地图扩展https://github.com/mg6maciej/android-maps-extensions

Android Get the markers that are not clustered

如果你只需要改变marker的图标,你可以制作png-image(例如,带有默认marker图标和圆圈)并将其作为资源粘贴到marker中。

map.addMarker(new MarkerOptions()
     .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_circle)));

如果您需要自定义圆圈,您可以通过编程方式创建它,但您仍然需要自定义标记图标(当然还需要提供不同版本(hdpi、xhdpi...)来调整大小)

// circle
int diameter = 500;
Bitmap bm = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.A
Canvas canvas = new Canvas(bm);
Paint p = new Paint();
p.setColor(getResources().getColor(R.color.green));
canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2, p);


// marker icon through Drawable
Drawable drawable = getResources().getDrawable(R.drawable.marker_icon, null);
// you should choose bounds
// drawable.setBounds(left, top, right, bottom);
drawable.draw(canvas);

//OR marker icon through Bitmap
Bitmap bmIcon = BitmapFactory.decodeResource(getResources(), R.drawable.marker_icon);
// choose correct top and left margin
canvas.drawBitmap(bmIcon, diameter / 2, diameter / 2, p);


map.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(bm)));

【讨论】:

  • 这个库中是否有任何方法可以在标记上添加圆圈并在标记重新聚集时删除这些圆圈?
  • 无法使用 png 图片,因为我的圆的半径不同。
  • 你以前用过这个库吗?我现在正在尝试集成它,当我执行 map = mapFragment.getExtendedMap(); 时,我将 map 设为 null;我验证了我的 mapFragment 不为空。这就是我创建 mapFragment mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container); 的方式if (mapFragment == null) { mapFragment = SupportMapFragment.newInstance(); FragmentTransaction tx = fm.beginTransaction(); tx.add(R.id.map_container, mapFragment); tx.commit(); }
  • 是的,我正在使用它,它很好。您应该通过异步方法 mapFragment.getExtendedMapAsync(new OnMapReadyCallback() { public void onMapReady(GoogleMap googleMap) { mMap = googleMap; setUpMap(); } }); 获取地图
  • @Akshay 但是你可以在纯谷歌地图中使用我的最后一个带有圆圈的解决方案,你不需要这个库
【解决方案2】:

谷歌地图现在有一个API for drawing a circle,你可以将它与一个简单的标记结合使用,它应该可以达到同样的效果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多