You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Map Android:GeoJSON图层上方添加多标记失败求助

解决Google Maps中GeoJSON图层上方无法显示多个标记的问题

看起来你遇到的核心问题是标记被GeoJSON图层遮挡,或者zIndex的设置逻辑没起到预期效果。我帮你拆解下问题并给出具体的修复方案:

问题分析

你当前的代码里,GeoJSON多边形的zIndex设为了1,而标记的zIndex是从zInd递增的——但如果zInd的初始值是0,第一次点击后变成1,和GeoJSON的zIndex相同,这时候标记还是会被图层遮挡(相同zIndex下,图层的渲染优先级可能更高)。另外也需要确认标记是否真的被重复添加,而不是被意外清除了。

修复步骤

1. 调整标记zIndex的初始值

把zInd的初始值设为大于GeoJSON图层的zIndex值(比如2),确保第一个标记就会显示在图层上方:

// 初始化zInd为2,确保比GeoJSON的zIndex 1大
private int zInd = 2;

2. 确保标记zIndex正确递增

在每次添加标记后递增zInd,这样新标记会显示在旧标记的上方(如果需要这个层级效果):

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng latLng) {
        try {
            Geocoder gc = new Geocoder(ScratchmapActivity.this, Locale.getDefault());
            List<Address> addrs = gc.getFromLocation(latLng.latitude, latLng.longitude, 2);
            String country = addrs.get(0).getCountryName();
            
            // 添加标记时使用当前zInd,之后递增
            mMap.addMarker(new MarkerOptions()
                    .position(latLng)
                    .title("aloha")
                    .zIndex((float) zInd));
            zInd++;
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
});

3. 验证GeoJSON图层的zIndex设置

保持你当前GeoJSON的zIndex设置不变,确保多边形的层级低于标记:

public void addGeoJsonLayer(int color, int resource){
    try {
        GeoJsonLayer layer = new GeoJsonLayer(mMap, resource, getApplicationContext());
        GeoJsonPolygonStyle style = layer.getDefaultPolygonStyle();
        style.setFillColor(color);
        style.setStrokeColor(color);
        style.setStrokeWidth(1F);
        style.setZIndex(1F); // 固定多边形层级为1,确保标记能覆盖
        layer.addLayerToMap();
    } catch (IOException ex) {
        Log.e("IOException", ex.getLocalizedMessage());
    } catch (JSONException ex) {
        Log.e("JSONException", ex.getLocalizedMessage());
    }
}

4. 额外排查点

  • 检查是否有代码调用了mMap.clear(),导致之前添加的标记被清除;
  • 如果还是有遮挡问题,可以尝试把标记的zIndex设为固定的大值(比如100F),强制让标记显示在最上层;
  • 可以添加日志或调用marker.showInfoWindow(),验证每次点击都成功添加了标记。

内容的提问来源于stack exchange,提问作者Lan Le

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:53:04