Android 标记的osmdroid坐标转换

Android 标记的osmdroid坐标转换,android,osmdroid,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大小 但如何将其转换为可用于标记位置的地质点 当我使用TileSystem.PixelXYToLatLong(…

我在osmdroid和最近发布的GuildWars 2 Map API中遇到了坐标系问题

该API返回我想要添加到地图中的POI(显示很好,是的:)

一个例子是:

{"poi_id":1486,"name":"Falooaloo","type":"landmark","floor":1,"coord":[19760.9,15379.5]}
所以,我有绝对XY坐标,相对于整个地图的XY大小

但如何将其转换为可用于标记位置的
地质点

当我使用TileSystem.PixelXYToLatLong(…)时,我总是得到相同的结果:-84928320178593750,0。这是世界的右下角

我不知道我做错了什么。有什么想法吗


Goddchen

这一切都取决于x,y坐标的解释方式。一些建议:

  • 尝试使用地图的投影类将像素转换为地质点

    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;
    

  • point1解决了我的问题-我在向IGeoPoint施压时遇到了问题。向上投票