地图标记未指向确切位置

Posted

技术标签:

【中文标题】地图标记未指向确切位置【英文标题】:Map marker doesn't point to exact location 【发布时间】:2013-06-21 01:56:51 【问题描述】:

所以我将地图中的标记存储到 sqlite 数据库中。我正在尝试按纬度和经度查询标记。因此,为了进行测试,我将标记添加到特定位置。当我检查标记位置时,它给了我另一个位置。这是什么原因造成的?

    private void drawMarker(LatLng point, String title, String snippet)
    // Creating an instance of MarkerOptions
    MarkerOptions markerOptions = new MarkerOptions();
    // Setting latitude and longitude for the marker
    LatLng l = new LatLng(37.52100000000001, -77.44800000000001);
    markerOptions.position(l);
    markerOptions.title(title);
    markerOptions.snippet(snippet);
    // Adding marker on the Google Map
    googleMap.addMarker(markerOptions); 

这是提取标记位置的代码

    googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() 

        @Override
        public void onInfoWindowClick(Marker marker) 
      marker1 = marker;     
      LatLng mlatlong = marker1.getPosition();
      markerLat = Double.toString(mlatlong.latitude);
      markerLng = Double.toString(mlatlong.longitude);
      latitude = mlatlong.latitude;
      longitude = mlatlong.longitude;
      Log.i("Marker", mlatlong.latitude +","+mlatlong.longitude);
      markerDialog();
        

    );

这给了我位置 06-20 21:53:52.447: I/Marker(15221): 37.52100000569583,-77.44800008833408

【问题讨论】:

如果你打印 LatLng l = new LatLng(37.52100000000001, -77.44800000000001); 你会看到什么? 嗨,David,您找到从标记中获取准确 LatLng 值的解决方案了吗?我也有同样的问题。 到目前为止,它已经足够接近我的需要了。我只是好奇为什么会这样。所以要回答你的问题,不,我还没有找到解决方案。 还是谢谢你。这对我来说还不够,因为我需要准确地比较位置。我对这个“”“”错误“”“”感到非常恼火。我会继续寻找...... 【参考方案1】:

在 Java 和您会遇到的大多数其他语言中,double 不会存储为精确值。

您可以阅读更多here。

此外,您发布的位置是extremely close to each other 并不重要。

【讨论】:

我没有注意到位置有任何变化。当我向我的 sqlite 查询该确切位置时,问题就来了。它没有找到它,因为它保存为我告诉它的确切位置。 我会避免这样做并使用某种密钥或其他标识符。 我考虑过查询标题,但用户可能会为多个标记使用相同的标题。

以上是关于地图标记未指向确切位置的主要内容,如果未能解决你的问题,请参考以下文章

地图标记放置在距离相应坐标较远的地方

地理位置指向建筑物入口,未定义 LatLng

初始化地图时未出现谷歌地图标记

高德地图如何标记

如何在百度地图上标注多个地点

谷歌地图精度问题