我有两对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);
我尝试了上面的代码。但是给我随机的位置。这种方法是否正确?
答案 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
对于用例,您要描述布局中的边距/填充似乎更合适。
希望这有助于你。