如何在屏幕坐标中绘制lat long

时间:2014-03-13 07:19:07

标签: android latitude-longitude screen-orientation

我有两对lat long值

currLat = 19.12696395;
currLong = 72.87338733;
collCurrLat = 19.12238216;
collCurrLong = 72.875275605;

我想在屏幕中央绘制currLat和currLong,并在相对于它的位置绘制collCurrLat和collCurrLong 在屏幕上将collCurrLat和collCurrLong描绘成一个小圆圈。

        int x = ((MapView)mParent).getWidth()/2;
        int y = ((MapView)mParent).getHeight()/2;

        //LatLonToPixel takes lat , long and zoom level as parameters.
        cPoint cpt = GlobalMercator.LatLonToPixel(currLat, currLong, 16);
        cPoint cptColl = GlobalMercator.LatLonToPixel(collCurrLat, collCurrLong, 16);

        int testx = cptColl.cx-cpt.cx + x;
        int testy =  cptColl.cy-cpt.cy + y;

        canvas.drawCircle(testx,testy,smallradius, mSelectionBrush);

我尝试了上面的代码。但是给我随机的位置。这种方法是否正确?

1 个答案:

答案 0 :(得分:0)

在您的问题中,您已经问过我想在屏幕中央绘制currLat和currLong 所以要获得屏幕中心,请尝试this链接&回答 Josef Pfleger发表。获得屏幕高度&宽度尝试此代码。

如果您想要显示尺寸(以像素为单位),可以使用getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
 int height = size.y;

如果您不在活动中,可以通过WINDOW_SERVICE获取默认显示:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

在引入getSize之前(在API级别13中), 您可以使用现已弃用的getWidth和getHeight方法:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

对于用例,您要描述布局中的边距/填充似乎更合适。

希望这有助于你。