无法在谷歌地图android上动态设置多个标记

Posted

技术标签:

【中文标题】无法在谷歌地图android上动态设置多个标记【英文标题】:Unable to set Multiple markers dynamically on google maps android 【发布时间】:2019-11-08 07:53:39 【问题描述】:

我正在使用推送器从另一台设备接收位置。在我的地图中,我想从推送器数据中动态显示多个标记。

我尝试了多种解决方案;但没有一个有助于实现我所需要的, tried this post

这是我的代码

JSONObject jsonObject1 = new JSONObject(DataFromPusher);
JSONArray jsonArray = jsonObject1.getJSONArray("Userlocation");
    for (int i =0; i < jsonArray.length(); i++)
    
        jsonObject = jsonArray.getJSONObject(i);
        lat = jsonObject.getString("Userlatitude");
        lng = jsonObject.getString("Userlongitude");
        cor = new LatLng(Double.parseDouble(lat),Double.parseDouble(lng));
        runOnUiThread(new Runnable() 
        @Override
        public void run() 
        if (marker != null)
        marker.remove();
        
        marker = mMap.addMarker(new MarkerOptions().position(cor).title(lat+ "  " +lng)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
    
);

推送响应:


    "Userlocation": [
        
        "Userlatitude": "12.9325340",
        "Userlongitude": "77.5450430"
        ,
        
        "Userlatitude": "12.9325350",
        "Userlongitude": "77.5450440"
        
    ]

【问题讨论】:

这两点相差 0.1553 米(或 6 英寸),因此很可能有 2 个标记 - 一个在另一个之上。但更重要的是,您的代码实际上删除了前一个标记 - 所以是的,您只会看到一个标记。 @Andy 是的,我也是这么想的,它可能会重叠,但我不确定。删除标记的原因是。我只想显示从推送数据接收到的当前位置。 【参考方案1】:

试试这个

            for (int i = 0; i < jsonArray.length(); i++) 
                JSONObject jsonObject;
                try 
                    jsonObject = jsonArray.getJSONObject(i);

                    String name = jsonObject.getString("name");
                    String lat = jsonObject.getString("lat");
                    String lng = jsonObject.getString("lng");

                    final MarkerOptions markerOptions = new MarkerOptions();
                    markerOptions.position(new LatLng(Double.parseDouble(lat), Double.parseDouble(lng)));
                    markerOptions.snippet(name);
                    Marker marker = googleMapWhole.addMarker(markerOptions);
                    markerList.add(marker);

                 catch (JSONException e) 
                    e.printStackTrace();
                
            
        
    

【讨论】:

以上是关于无法在谷歌地图android上动态设置多个标记的主要内容,如果未能解决你的问题,请参考以下文章

无法在谷歌地图中添加多个标记(颤振)

无法在谷歌地图上看到多个标记

无法单击标记 - 谷歌地图集群Android,无法在谷歌地图中显示信息窗口

如何在谷歌地图android上添加标记?

在谷歌地图颤动中设置标记

如何在谷歌地图上添加多个标记