【问题标题】:osmdroid coordinate conversion for markers标记的osmdroid坐标转换
【发布时间】:2013-06-21 15:47:43
【问题描述】:

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

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

上帝

【问题讨论】:

    标签: android osmdroid


    【解决方案1】:

    这完全取决于这些 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;
      

    【讨论】:

    • point1 解决了我的问题 - 我在投射到 IGeoPoint 时遇到问题。赞成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多