- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的 GoogleMap
上有一个 GroundOverlay
,我希望它的尺寸在我放大/缩小 map 时不会改变。与始终保持其尺寸的默认 map markers
完全一样。我已经尝试过两种形式的 GroundOverlay.setDimensions()
但图像在缩放时仍会调整大小。这是我的代码:
Bitmap btm = BitmapFactory.decodeResource(getResources(), R.drawable.map_arrow);
BitmapDescriptor arrow = BitmapDescriptorFactory.fromBitmap(btm);
float w = btm.getWidth();
float h = btm.getHeight();
if (groundOverlay != null) groundOverlay.remove();
groundOverlay = mMap.addGroundOverlay(new GroundOverlayOptions()
.image(arrow).position(meLoc, w,h).bearing(bearAngle));
groundOverlay.setDimensions(1000);
最佳答案
您拥有覆盖层的宽度和高度,并根据您的缩放级别将其放置在 map 上。对于那个缩放级别来说似乎不错。正确的?现在您可以计算半径并获取 map 屏幕的米数。因为 map 背景叠加的宽高值都是米。我们必须使用仪表而不是缩放级别或其他任何东西。也许有人可以找到更好的解决方案,但我尝试了太多方法,最终得到了这个解决方案并且效果很好。
float zoomLevel=mMap.getCameraPosition().zoom;
//calculate meters*********************
myBounds = mMap.getProjection().getVisibleRegion().latLngBounds;
myCenter= mMap.getCameraPosition().target;
if (myCenter.latitude==0 || myCenter.longitude==0) {
myCenter=new LatLng(myLocation.getLatitude(),myLocation.getLongitude());
}
LatLng ne = myBounds.northeast;
// r = radius of the earth in statute miles
double r = 3963.0;
// Convert lat or lng from decimal degrees into radians (divide by 57.2958)
double lat1 = myCenter.latitude / 57.2958;
double lon1 = myCenter.longitude / 57.2958;
final double lat2 = ne.latitude / 57.2958;
final double lon2 = ne.longitude / 57.2958;
// distance = circle radius from center to Northeast corner of bounds
double dis = r * Math.acos(Math.sin(lat1) * Math.sin(lat2) +
Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1));
//1 Meter = 0.000621371192237334 Miles
double meters_calc=dis/0.000621371192237334;
float factor=1;
if (zoomLevel==15) { // my default zoom level yours can be different
metersoverlay=meters_calc; // global variable metersoverlay set
}
else { // if my zoom level change then I have to calculate dimension scale factor
factor=(float) (meters_calc/metersoverlay);
}
//******************************* now we are ready to set dimension of background overlay
float dimensions=1000*factor;
loadingGroundOverlayBg.setDimensions(dimensions);
希望对大家有用:)
关于android - 是否可以将尺寸设置为独立于 map 缩放级别的 groundOverlay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381358/
我正在开发 Android Weather 应用程序,我的要求是显示动画预报。我们有一个服务器,我从那里使用 Glide 将预测图像加载为位图,然后使用位图创建 GoogleMap 的 GroundO
关于在 map 上定位图像并给出其边界,Google map 的文档指出: When the image is drawn on the map it will be rotated to fit t
我正在尝试将我多年前编写的 GM v2 脚本转换为 v3。 在地面叠加层(天气雷达图)上时,我遇到了鼠标事件的问题。我知道 v3 没有与 v2 相反的实现。 只要鼠标不在叠加层上,事件就会正常工作。
我需要通过脉冲动画显示位置 A 和位置 B。我可以使用下面的代码来实现。但我面临的问题是 GroundOverlay 在缩放级别更改时更改其大小。如果位置 A 和 B 彼此靠近(即 map 放大级别高
我有一个 .tif 文件(卫星图像)和一个相应的 .tfw 文件。我已经成功地转换了从世界文件中提取的坐标 (lat/lng),并且我已经使用 Photoshop 将 .tif 文件转换为 .png
我正在将 10 个 GroundOverlays 加载到 GoogleMap 上,并希望显示与加载图像相关的进度。 var imageBounds = new google.maps.LatLngBo
我有一个问题让我抓狂了两天。 我们有一个 Google map 应用程序,可以提取 KML 文件以将历史 map 显示为图像叠加层。大约上周,我们的应用程序开始显示非常模糊的图像,这些图像是从 goo
我找不到与此相关的任何文档。我观察到我的图像在 Android 中加载到谷歌地图 GroundOverlay 时默认情况下是抗锯齿的。谷歌地图 GroundOverlays 是否默认启用抗锯齿? 最佳
我的 GoogleMap 上有一个 GroundOverlay,我希望它的尺寸在我放大/缩小 map 时不会改变。与始终保持其尺寸的默认 map markers 完全一样。我已经尝试过两种形式的
我在我的 Android 应用程序中使用 GoogleMaps,我想在 map 上显示动画雷达图像。 我有一个包含 6 个位图的数组。当用户点击播放时, map 会循环显示 map 上的每个图像。 这
很简单的问题。 我在 KML 中定义了一些 Polygons 和 GroundOverlays。有没有办法指定它们应该是可点击的,并且(至少在谷歌地球中)在点击它们时弹出一个信息气球或类似的东西? 同
对于我正在开发的应用程序,我想制作一个图像叠加层。在 iOS 上,我为此使用了 Google Maps API,效果很好。但是使用完全相同的设置、配置和 API,它在 Android 上不起作用。这是
我已经设置了一个 UIView 以使用 Google map 显示 map 的特定区域。我现在想在这个选定区域的顶部添加一个图像叠加层,但我不知道如何为此计算正确的坐标。我已将 map 设置为中心坐标
我正在制作 map 元素,用于在 map 上添加形状和位置并保存它。 但是我遇到了 groundoverlay 的问题。 我知道谷歌地图文档中没有旋转属性。但我需要一种方法/技巧来通过任何其他方式旋转
我有一个 iOS 应用程序,我想在其中读取包含 GroundOverlays 的 KML 文件。 GroundOverlay 包含图像 href、北、南、东、西坐标以及旋转。 我按照本教程 ( htt
我正在使用谷歌地图作为天气信息显示网络。 我想显示过去 7 天的云状况。 我正在使用叠加层在我的网络上显示云。 现在我的问题是我们可以使用 javascript 更改 google.maps.Grou
使用 react-google-maps以 GroundOverlay 为例组件为例(参见 https://github.com/khpeek/beomaps/blob/master/src/App.
我正在尝试使用以下代码将鼠标事件附加到 groundOverlay 功能: var groundOverlay = ge.createGroundOverlay(''); v
我有一个应用程序,用户可以在其中将图像加载到 Google map 上。这是为 2.3 开发的,因此有一个 MapActivity、一个 MapView 和显示图像的自定义 Overlay 类。在覆盖
我正在使用 android google maps API V2,我想在 map 特征(例如,街道名称、城镇名称、公园等)之上绘制一个 GroundOverlay。现在,我的 GroundOverla
我是一名优秀的程序员,十分优秀!