Articles of android maps v2

旋转手机时如何最好地重新创建标记/折线(方向更改)

背景: 开发使用Android Google Map v2的原生Android应用程序,使用android.support.v4.app.FragmentActivity 。 在Android v2.2上运行。 目的: 在手机方向更改之前,保留在地图上“绘制”标记/折线。 问题(S): 我可以将标记/折线“保存”为捆绑包的一部分,只需使用适当的savedInstance.put..方法将它们保存在onSaveInstanceState ,然后使用适当的savedInstanceState.get..在onCreate “恢复”它们,就可以重新显示它们savedInstance.put.. savedInstanceState.get..方法。 在查看Marker getID()的描述时,我很困惑Marker.getId()方法的Google文档说明如下: 从Bundle 恢复地图时,也会恢复该地图上的标记 。 但是,这些标记将由不同的标记对象表示。 标记的id可用于在此类恢复之后检索Marker对象的新实例。 Google文档(上面的粗体文字)使得听起来像Marker’s只是自动恢复而无需采取任何行动。 那不是我的经历……也许我错误地解释了所说的内容。 或者你可能必须在Bundle中明确保存地图? 有人可以澄清这意味着什么吗? 假设我必须通过相应的savedInstance.put…方法明确地将标记和折线保存到包中,我应该保存整个标记还是应该保存标记ID并使用标记id检索标记信息以重新显示标记? 我找不到一个允许我保存整个标记的put方法。 我注意到Google Maps Android API v2的MapFragment部分说明了以下内容: 从GoogleMap获取的任何对象都与视图相关联。 重要的是不要在视图的生命之外保持对象(例如标记)。 否则会导致内存泄漏,因为视图无法释放。 这个陈述让我相信我不应该尝试保存标记本身,而是尝试保存标记id,然后根据与标记id关联的标记对象重新生成标记。 同样对于PolyLines。 我的假设是否正确? 另外,我应该避免将Marker作为类variables吗? 我担心的是,如果Marker是一个类variables,并且Activity Map片段放在后面的堆栈上,这可能会导致内存泄漏,因为它将有效地“保持对象”,如前面提到的文档中所述。 这是我应该关注的吗? 问候。

Google Maps Android API v2在中国 – 地图加载大约需要一个小时

我有什么:使用Android Maps API v2(本机库)的原生Android应用程序 香港和乌克兰的一切都很好。 一旦我们踏入中国边境,问题就出现了。 我们有下一个问题: 地图从30分钟到约1小时。 即使它被加载,地图分辨率也非常低http://img.androidcookie.com/android/d4f40e1a225bd48a90087c39a502e4a6.png Google Map WORKS本身: http : //i.gyazo.com/dc85e3618c285ced5bba799053dd0306.png 我对中国的了解: 谷歌在那里并不友好,但我们的应用程序不是在中国使用谷歌地图的应用程序,所以我的问题可能不是一个新的。 可以选择使用在中国本地托管的谷歌地图 – ditu.google.cn,但是一旦我们使用原生应用,现在就没有选择使用地图的网络视图而不是本地实现(我们有很多自定义) 我知道,最好不要将HTTPS与谷歌地图结合使用(你可以在这里阅读: 中国的Google Maps Geolocation API ) 问题是: 我们能以某种方式改善地图的负荷吗? 我们可以以某种方式覆盖谷歌地图来源以使用ditu.google.cn吗? 我们可以在Map API中以某种方式禁用HTTPS吗? 围绕此问题的任何其他解决方案,可以基于谷歌服务应用。 也许有一些无证的function? 什么是没有想到的答案是“使用百度”。 我知道百度,这是一个veeryyy备份选项,只要他们有一个api docs in chineese。 需要补充的是,基于ditu.google.cn的Geocoding API运行良好。 期待,谢谢!

Android用轴承映射V2 newLatLngBounds

我正在使用这个布局的新Android地图V2: 我正在尝试使用newLatLngBounds(LatLngBounds bounds,int padding)方法来缩放和查看地图中的所有标记,但摄像机方位设置为0。 谷歌开发者文档中的描述说: public static CameraUpdate newLatLngBounds(LatLngBounds bounds,int padding)(…)。 返回的CameraUpdate的轴承为0,倾斜度为0.(…)“。 如何更改轴承值? 在调用newLatLngBounds后,我尝试以编程方式设置新轴承,如下所示: mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100)); mMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder() .target(mMap.getCameraPosition().target) .zoom(mMap.getCameraPosition().zoom) .bearing(270) .build())); 但是当我这样做时,一些标记将不会显示出来。

不推荐使用Android setOnMyLocationChangeListener

Android Google Map的setOnMyLocationChangeListener方法现已弃用。 有谁知道如何绕过它? 谢谢。

检查标记是否在圆半径内

我想知道给定的标记是否在圆半径内。 在javascript中,我可以做类似的事情: google.maps.geometry.spherical.computeDistanceBetween(latLngCircleCenter, latLngPoint); 但在android中,使用maps-v2,我被困住了。

确定点是否在多边形中

根据我的要求,我在谷歌地图上绘制多边形,如下图所示。(使用地图v2) 现在,我需要在用户输入特定多边形时显示警报。 如何识别我的当前位置是否在多边形中。 (需要优化的方式,不需要耗尽电池) 提前致谢。

隐藏android google maps API v2中的标记信息窗口

目前,我可以使用Android Google Maps API v2在Google地图中查看我的所有标记。 在地图中添加我的标记: mapView.addMarker (new MarkerOptions() .position(aUsersLocation). icon(BitmapDescriptorFactory.fromBitmap(aUserImage)) .snippet(My_VALUE_1) .title(My_VALUE_2) .hideInfoWindow(); 我有几个标记,并为每个标记的代码段和标题分配了几个值(My_VALUE_1和My_VALUE_2)。 当用户点击标记时,我需要这些唯一值,我将在onMarkerClick监听器中收到以下值: @Override public boolean onMarkerClick(Marker theMarker) { String aValue1 = theMarker.getSnippet(); String aValue2 = theMarker.getTitle(); theMarker.getPosition().latitude… … return false; } 我的问题是:当我将标题和标题值添加到标记时,当用户单击标记时,会显示infoWindow。 我需要隐藏标记的infoWindow。 我尝试使用hideInfoWindow ,但它似乎无法正常工作。 请给我任何建议。 谢谢。

从Android Google Maps API v2中删除一个圆圈而不清除地图

我正在我的地图上绘制一个圆圈,如下所示: CircleOptions circle=new CircleOptions(); circle.center(centre); circle.strokeColor(0xFFFFA420); circle.strokeWidth(2f); circle.fillColor(0x11FFA420); circle.radius(radius); myMap.addCircle(circle); 要删除此圈子,我调用myMap.clear() ,删除添加到地图中的所有项目。 问题是如何删除此圈而不删除地图上的所有其他项?

TileProvider方法getTile – 需要将x和y转换为lat / long

我正在将iOS应用移植到Android,并使用Google Maps Android API v2. 应用程序需要在地图上绘制热图叠加层。 到目前为止,看起来最好的选择是使用TileOverlay并实现自定义TileProvider 。 在方法getTile ,我的方法被赋予x,y和zoom,并且需要以Tile的forms返回位图。 到现在为止还挺好。 我有一组热图项目,我将用它们在位图​​上绘制径向渐变,每个都有一个纬度/经度。 我遇到以下两个任务有问题: 如何确定由x,y和zoom表示的图块是否包含热图项目的纬度/经度? 如何将热图项目的纬度/经度转换为位图的x / y坐标。 感谢您的帮助! UPDATE 感谢MaciejGórski的回答,以及marcin的实现,我能够回答我的问题的前半部分,但我仍然需要第二部分的帮助。 为了澄清,我需要一个函数来返回指定纬度/经度的图块的x / y坐标。 我试图扭转MaciejGórski的计算和marcin的答案而没有运气。 public static Point fromLatLng(LatLng latlng, int zoom){ int noTiles = (1 << zoom); double longitudeSpan = 360.0 / noTiles; double mercator = fromLatitude(latlng.latitude); int y = ((int)(mercator / 360 * noTiles)) […]

“使用谷歌地图导致类片段错误”

我尝试使用Google Map制作示例项目,但我做不到。 请帮帮我! 测试设备:Android 4.0.4 错误信息 : 12-29 23:45:32.605: E/AndroidRuntime(9437): FATAL EXCEPTION: main 12-29 23:45:32.605: E/AndroidRuntime(9437): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test_googlemap/com.example.test_googlemap.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 12-29 23:45:32.605: E/AndroidRuntime(9437): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 12-29 23:45:32.605: E/AndroidRuntime(9437): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 12-29 23:45:32.605: E/AndroidRuntime(9437): at android.app.ActivityThread.access$600(ActivityThread.java:127) 12-29 23:45:32.605: E/AndroidRuntime(9437): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 12-29 23:45:32.605: E/AndroidRuntime(9437): at […]