[英]How to overcome google static maps API 6 decimal places precision limit?
纬度和经度是使用逗号分隔的文本字符串中的数字定义的,这些数字的精度为小数点后6位。 例如,“ 40.714728,-73.998672”是有效的地理编码值。 超过6位小数的精度将被忽略。
但是,我注意到,在许多情况下,这种精度是不够的。 ( 编辑 :实际上,小数点后6位允许大约2厘米的精度,如323go注释 。有关更多信息,请参见底部的编辑。)
例如:尝试在埃菲尔铁塔上放置标记( Lat: 48.8583701,Lon: 2.2922926
)会被截断(对Lat: 48.858370, Lon:2.292292
),结果如下,其偏移量不可忽略:
我使用静态地图是因为在我的应用程序中,我同时在RecyclerView的项内显示多个地图。
目前,我是通过Picasso异步注入Google静态地图API返回的图像来实现的。
当前的方法运行良好且运行平稳,唯一的问题是地图精度不足。
作为一种解决方法,我正在考虑在精简模式下使用标准MapView ,但是我担心这可能会导致性能问题,如本问题所述
即使需要付款,是否有办法克服这一限制?
我使用了错误的坐标。 我会解释一下我是如何得到它们的,以防万一其他人犯同样的错误。
加载https://google.com/maps/place/Tour+Eiffel后 ,我使用的是URL中显示的坐标,在我的情况下,该坐标为URL 。
当网络版Google Maps的左侧面板处于打开状态(这是默认行为)时,图钉似乎位于地图的中心。
不过, URL的坐标表示地图的中心,包括左侧面板下的部分 。 一旦左侧面板合拢,这很容易注意到。
这就是造成水平偏移的原因。
我试图弄清楚这一点,但就我而言,一切工作正常且精确,我注意到您使用的坐标不同于我的坐标
对于艾菲尔铁塔,我使用了:
48.858285、2.294388
那应该给您带来更好的结果,还请记住,您可以使用Geocoder放置带有地点名称或完整地址的标记,即:
战神广场(Champ de Mars),法国阿纳托莱大街5号,邮政编码75007,法国巴黎
这样的事情应该有所帮助
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.