我遇到以下问题:我的设备上有一张owen Map。现在我从GPS提供商那里得到了实际的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);
答案 0 :(得分:0)
您应该存储左下角(SW)和右上角(NW)的地图(e)n的纬度,经度坐标。
然后你可以计算地图的X-Width = longitudinalSpan和y-height = latitudinalSpan。
确保您自己的地图有North Up。 其余的应该很简单。
但这仅适用于小规模地图。 大约10公里,也许更多。
答案 1 :(得分:0)
好的,我有以下内容:
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;
但是,这不对!? 为什么呢?
谢谢,对不起我的英文