Google Static Maps API Documentation州:
使用逗号分隔的文本字符串中的数字定义纬度和经度,精度为6位小数。例如," 40.714728,-73.998672"是一个有效的地理编码值。 忽略超出6位小数的精度。
但是,我注意到在许多情况下,这种精确度还不够。
(编辑:实际上,6个小数位允许精度约为2厘米,为323go comments。有关详细信息,请参阅底部的编辑)
例如:试图在艾菲尔铁塔上放置一个标记(Lat: 48.8583701,Lon: 2.2922926
)会被截断(到Lat: 48.858370, Lon:2.292292
)获得以下结果,该结果具有不可忽略的偏移量:
我使用静态地图是因为在我的应用程序中,我同时在RecyclerView的项目中显示多个地图。
我目前通过Picasso异步注入Google静态地图API返回的图片来实现这一目标。
这种当前的方法效果很好并且表现平稳,唯一的问题是地图缺乏精确度。
作为解决方法,我正在考虑在MapView中使用标准Lite Mode,但我担心它会导致性能问题,如this question中所述
有没有办法克服这个限制,即使它需要付费?
我使用了错误的坐标。我将解释我是如何得到它们的,以防万一其他人犯同样的错误。
我正在使用加载https://google.com/maps/place/Tour+Eiffel后在网址中显示的坐标,在我的情况下是this URL。
当Google地图的网络版左侧面板打开时(这是默认行为),该图钉似乎位于地图的中心。
然而, URL的坐标代表地图的中心,包括左侧面板下的部分。左侧面板折叠后很容易注意到这一点。
这是导致水平偏移的原因。
答案 0 :(得分:3)
我试图解决这个问题,但在我身边,一切都工作得很好,很精确,我注意到你使用的是不同于我的坐标
对于我使用的艾菲尔铁塔:
48.858285,2.294388
这应该可以为您提供更好的结果,同时请记住您可以使用 Geocoder 放置带有地点名称或完整地址的标记,即:
Champ de Mars,5 Avenue Anatole France,75007 Paris,France
这样的事情应该有所帮助
Geocoder geocoder = new Geocoder(<your context>);
List<Address> addresses;
addresses = geocoder.getFromLocationName(<String address>, 1);
if(addresses.size() > 0) {
double latitude= addresses.get(0).getLatitude();
double longitude= addresses.get(0).getLongitude();
}