android – 在Google Maps API v2中在屏幕上绘制恒定大小的圆圈

android – 在Google Maps API v2中在屏幕上绘制恒定大小的圆圈,第1张

概述我正在使用Gooogle Maps API v2开发 Android应用程序.我的地图上有标记,我想圈出其中一个.通过使用Circle和Circle Options类,我设法轻松地做到了这一点.但是我也喜欢我的圆圈在变焦或不变时在屏幕上保持相同的尺寸,就像标记一样.这意味着圆圈在像素方面必须具有恒定的半径.遗憾的是,我们无法在API v2中设置半径像素. 我尝试了几种解决方案,但我并不满意. 在第 我正在使用Gooogle Maps API v2开发 Android应用程序.我的地图上有标记,我想圈出其中一个.通过使用Circle和Circle Options类,我设法轻松地做到了这一点.但是我也喜欢我的圆圈在变焦或不变时在屏幕上保持相同的尺寸,就像标记一样.这意味着圆圈在像素方面必须具有恒定的半径.遗憾的是,我们无法在API v2中设置半径像素.

我尝试了几种解决方案,但我并不满意.

在第一个中,我只是乘以或除以半径:

@OverrIDepublic voID onCameraChange(Cameraposition position) {    if(prevIoUsZoom > position.zoom) {        mSelectionCircle.seTradius(Math.abs(position.zoom - prevIoUsZoom)*2*mSelectionCircle.geTradius());    }    else if(prevIoUsZoom < position.zoom) {        mSelectionCircle.seTradius(Math.abs(position.zoom - prevIoUsZoom)*mSelectionCircle.geTradius()/2);    }    prevIoUsZoom = position.zoom;}

它似乎首先起作用,但在快速缩放或用手指缩放时会产生错误的结果.此外,缩放在屏幕上清晰可见.

我的第二个解决方案使用像素计转换.这个想法是在缩放/不变时重新计算以米为单位的半径,因此圆圈在屏幕上具有恒定的大小.为此,我在屏幕上显示Circle的当前位置:

Point p1 = mMap.getProjection().toScreenLocation(mSelectionCircle.getCenter());

然后我创建另一个位于圆的边缘的点:

Point p2 = new Point(p1.x + radiusInPixels,p1.y);

哪里

int radiusInPixels = 40;

之后,我使用一个函数返回这两个点之间的距离,以米为单位.

private double convertPixelsToMeters(Point point1,Point point2) {    double angle = Math.acos(Math.sin(point1.x) * Math.sin(point2.x)                  + Math.cos(point1.x) * Math.cos(point2.x) * Math.cos(point1.y- point2.y));    return angle * Math.PI * 6378100.0; // distance in meters}

6378100是地球平均半径.最后,我设置了Circle的新半径:

mSelectionCircle.seTradius(convertPixelsToMeters(p1,p2));

它应该在理论上工作,但我得到荒谬的半径值(10 ^ 7米!).转换功能可能有误?

那么有一种更简单的方法可以做到这一点,或者如果没有,你可以帮助我理解为什么我的第二个解决方案不起作用吗?

谢谢!

解决方法 请使用标记的自定义图标.您可以创建Bitmap和Canvas,在后者上绘制并将其用作Marker图标:

new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(bitmap))...
总结

以上是内存溢出为你收集整理的android – 在Google Maps API v2中在屏幕上绘制恒定大小的圆圈全部内容,希望文章能够帮你解决android – 在Google Maps API v2中在屏幕上绘制恒定大小的圆圈所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存