【问题标题】:Android - Show a GPS Point in a owen MapAndroid - 在欧文地图中显示 GPS 点
【发布时间】:2026-01-02 02:35:01
【问题描述】:

我有以下问题:我的设备上有一张欧文地图。现在我从 GPS Provider 获得了实际的 GPS 位置,并在我的地图上绘制了这个点。如果我计算跟随 DrawPoint 在任何地方。怎么了?

XMapScreen = 100;
YMapScreen = 200;
XMapGPS = 50.598886;
YMapGPS = 11.994318;

dLat = arg0.getLatitude();
dLon = arg0.getLongitude();

PointToDrawX = ((dLat * XMapScreen )/XMapGPS);
PointToDrawY = ((dLon * YMapScreen )/YMapGPS);

【问题讨论】:

  • 我在 Photoshop 中绘制的地图
  • 您是否正在尝试将 gps 坐标转换为屏幕中的像素?
  • 是的,我会这样做
  • @bastiZR 然后你需要地图的长度和宽度,找到距离(dLat-XMapGPS)然后转换

标签: android map gps position draw


【解决方案1】:

您应该存储左下角 (SW) 和右上角 (NW) 的 ow(e)n 地图的纬度、经度坐标。

然后您可以计算地图的 X 宽度 = 纵向跨度和 y 高度 = 纬度跨度。

确保您自己的地图有 North Up。 其余的应该很简单。

但这仅适用于小规模地图。 大约 10 公里,也许更多。

【讨论】:

  • 好的,如果我有跨度,下一步我应该做什么?对不起我的英语不好xD
  • 对于这样的任务,最少的数学知识是必要的:您应该知道如何线性插值,如何计算转换因子(例如 screenWidth/longitdueSpan)。首先在纸上尝试:假设屏幕宽度和高度 = 100 * 100,并在地图中间有一个点。
  • 但是我该怎么做呢?
  • 编写一个程序,计算 3 到 4 之间的 70% 值。正确答案是 3.7。如果你能解决这个问题,你就更进一步了。
  • 现在没有问题了吗?我想我站在软管上
【解决方案2】:

好的,我有以下内容:

double dLat = arg0.getLatitude(); //GPS Position
    double dLon = arg0.getLongitude(); //GPS Position

    double latLeftLower = 50.58731;
    double lonLeftLower = 11.992316;

    double latRightUpper = 50.593509;
    double lonRightUpper = 11.998522;

    double dLatSpan = latRightUpper-latLeftLower;
    double dLonSpan = lonRightUpper-lonLeftLower;

    double dScreenWidth = ivMap.getWidth();
    double dScreenHeight = ivMap.getHeight();

    double dLatFactor = dScreenWidth/dLatSpan;
    double dLonFactor = dScreenHeight/dLonSpan;

    Log.i("GPS", "location changed: lat="+lat+", lon="+lon);
    double xDraw = ((dLat * dScreenWidth) / dLatSpan) / dLatFactor;
    double yDraw = ((dLon * dScreenHeight) / dLonSpan) / dLonFactor;

但这不对!? 为什么?

感谢和抱歉我的英语

【讨论】:

  • 现在看起来好多了,哪里不对?编写一个 Junit tets 案例,并尝试使用所有 conrers 和 middel point oif 屏幕。
最近更新 更多