标记的osmdroid坐标转换

时间:2013-06-21 15:47:43

标签: android osmdroid

我正面临着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

1 个答案:

答案 0 :(得分:3)

这一切都取决于如何解释那些x,y坐标。一些建议:

  1. 尝试使用地图的投影类将像素转换为Geopoint。

    IGeoPoint p = mMapView.getProjection().fromPixels(...);
    
  2. 预期的坐标是什么缩放级别?如果您没有为API指定缩放级别,则需要相应地进行调整。

  3. 最后,请注意osmdroid使用地图的中心作为原点,而不是地图的左上角。因此,您可能需要将坐标偏移一半的世界大小。要抵消它们,请执行以下操作:

    final int worldsize_2 = TileSystem.MapSize(zoomlevel) / 2;
    final adjustedX = x - worldsize_2;
    final adjustedY = y - worldsize_2;