我正面临着osmdroid和最近发布的GuildWars 2 Map API的坐标系问题。
该API返回我要添加到地图的POI(显示得很好,是的,是的))。
一个例子是:
{"poi_id":1486,"name":"Falooaloo","type":"landmark","floor":1,"coord":[19760.9,15379.5]}
所以,我在绝对XY中的坐标与整个地图的XY大小有关。
但是如何将其转换为我可用于标记位置的GeoPoint
?
当我使用TileSystem.PixelXYToLatLong(...)
时,我总是得到相同的结果:-84928320,178593750,0。这是世界的右下角。
我看不出我做错了什么。有什么想法吗?
Goddchen
答案 0 :(得分:3)
这一切都取决于如何解释那些x,y坐标。一些建议:
尝试使用地图的投影类将像素转换为Geopoint。
IGeoPoint p = mMapView.getProjection().fromPixels(...);
预期的坐标是什么缩放级别?如果您没有为API指定缩放级别,则需要相应地进行调整。
最后,请注意osmdroid使用地图的中心作为原点,而不是地图的左上角。因此,您可能需要将坐标偏移一半的世界大小。要抵消它们,请执行以下操作:
final int worldsize_2 = TileSystem.MapSize(zoomlevel) / 2;
final adjustedX = x - worldsize_2;
final adjustedY = y - worldsize_2;