Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌地图-在android中改变我的价值观_Android_Google Maps Android Api 2 - Fatal编程技术网

谷歌地图-在android中改变我的价值观

谷歌地图-在android中改变我的价值观,android,google-maps-android-api-2,Android,Google Maps Android Api 2,我对谷歌地图中的纬度和纬度有问题。 这是我添加标记的方式: Marker newStore = map.addMarker(new MarkerOptions().position(new LatLng(store.getLatitude(), store.getLongitude())) .title(store.getName()).icon(BitmapDescriptorFactory.defaultMarker(markerResolver("u

我对谷歌地图中的纬度和纬度有问题。 这是我添加标记的方式:

Marker newStore = map.addMarker(new MarkerOptions().position(new LatLng(store.getLatitude(), store.getLongitude()))
                    .title(store.getName()).icon(BitmapDescriptorFactory.defaultMarker(markerResolver("up"))));
其中
store.getLatitude=44.04687
store.getLatitude=-70.295734
。 当我在添加标记后打印标记位置时,我得到的是:
marker.getPosition().纬度=44.046873756
marker.getPosition().经度=-70.295734543234

现在我想将这两个数据相等以按位置搜索我的存储,但我不能这样做,因为存储位置和标记位置不同。标记位置比sote位置更精确。我怎样才能避免这种情况。我这样问是因为我有一个商店列表,并按位置添加标记。现在,我想按位置单击哪个存储,但正如您所看到的,marker和sotre的位置不同。

一个选项是利用地理哈希的概念,根据两点之间的接近程度来评估相等性。地理哈希大小(距离)可以在实例化时配置。因此,在您的示例中,您可以这样构造GeoHash:

GeoHash myLocHash = GeoHash.withCharacterPrecision(store.getLatitude(), store.getLongitude(), 7);
GeoHash markerLocHash = GeoHash.withCharacterPrecision(marker.getPosition().latitude, marker.getPosition().longitude, 7);

if (myLocHash.equals(markerLocHash)) {
    // Same location +/- .61 km margin of error
}
对于您需要的东西来说,这可能有些过分,但对于其他应用程序来说却是一个非常方便的选择。下面是一个非常适合GeoHash的Java库:

更多关于GeoHash的阅读:


由于以下原因,您不应通过
LatLng
位置比较
标记
或任何其他对象

您可以保留一张带有所有
标记的
地图
存储
并在
onMarkerClick
中这样检索:

Store store = map.get(marker);

关于这一点和其他方法的更多信息:

创建标记时,为什么不在标记的代码段中添加商店名称或其他内容,这样当它被单击时,您所要做的就是查看代码段以查看它是什么商店。或者只是从标题中得到它,你把它放在前面,很简单。。。非常感谢你。我不知道为什么我会跳过我选择这种方式的代码片段:)