1

我正面临 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。这是世界的右下角。

我看不出我做错了什么。有任何想法吗?

戈登

4

1 回答 1

3

这完全取决于这些 x,y 坐标的解释方式。几点建议:

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

    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;
    
于 2013-06-21T17:28:34.613 回答