我正在将iOS应用程序移植到Android,并且使用Google Maps Android API v2. 该应用程序需要在地图上绘制热图叠加层.
到目前为止,看起来最好的选择是使用TileOverlay并实现自定义TileProvider.在该方法中getTile,我的方法被赋予x,y和zoom,并且需要以a的形式返回位图Tile.到现在为止还挺好.
我有一组热图项目,我将用它们在位图上绘制径向渐变,每个都有一个纬度/经度.我遇到以下两个任务有问题:
谢谢您的帮助!
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)) + 180;
int x = (int)(latlng.longitude / longitudeSpan) + 180;
return new Point(x, y);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
android google-maps google-maps-android-api-2 android-maps-v2
我尝试使用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
android.os.Handler.dispatchMessage(Handler.java:99) 12-29
23:45:32.605: E/AndroidRuntime(9437): at
android.os.Looper.loop(Looper.java:137) 12-29 23:45:32.605:
E/AndroidRuntime(9437): at
android.app.ActivityThread.main(ActivityThread.java:4507) 12-29
23:45:32.605: E/AndroidRuntime(9437): at
java.lang.reflect.Method.invokeNative(Native Method) 12-29
23:45:32.605: E/AndroidRuntime(9437): at
java.lang.reflect.Method.invoke(Method.java:511) 12-29 23:45:32.605:
E/AndroidRuntime(9437): at …Run Code Online (Sandbox Code Playgroud) 我想知道给定的标记是否在圆半径内.
在javascript中,我可以做类似的事情:
google.maps.geometry.spherical.computeDistanceBetween(latLngCircleCenter, latLngPoint);
Run Code Online (Sandbox Code Playgroud)
但是在android中,使用maps-v2,我被困住了.

背景:
android.support.v4.app.FragmentActivity.在Android v2.2上运行.目的:
问题(S):
我可以标记/折线"保存"作为软件包的一部分,只需将其储存在他们重新显示onSaveInstanceState使用适当的savedInstance.put..方法和然后"恢复"他们onCreate使用适当的savedInstanceState.get..方法.
在查看Marker的描述getID()时,当Marker.getId()方法的Google文档声明如下时,我很困惑:
从Bundle 恢复地图时,也会恢复该地图上的标记.但是,这些标记将由不同的标记对象表示.标记的id可用于在此类恢复之后检索Marker对象的新实例.
谷歌文档(上面的粗体文字)使得听起来像标记只是自动恢复而无需采取任何行动.那不是我的经历......也许我错误地解释了所陈述的内容.或者你可能必须在Bundle中明确保存地图?有人可以澄清这意味着什么吗?
假设我必须通过适当的savedInstance.put...方法明确地将标记和折线保存到包中,我应该保存整个标记还是应该保存标记ID并使用标记ID检索标记信息以重新显示标记?我找不到一种put方法可以让我保存整个标记.
我注意到,MapFragment部分谷歌地图API的Android V2它的声明如下:
从GoogleMap获取的任何对象都与视图相关联.重要的是不要在视图的生命之外保持对象(例如标记).否则会导致内存泄漏,因为视图无法释放.
这个陈述让我相信我不应该尝试保存标记本身,而是尝试保存标记id,然后根据与标记id关联的标记对象重新生成标记.同样对于PolyLines.我的假设是否正确?
另外,我应该避免将Marker作为类变量吗?我担心的是,如果Marker是一个类变量,并且Activity Map片段放在后面的堆栈上,这可能会导致内存泄漏,因为它将有效地"保持对象",如前面提到的文档中所述.这是我应该关注的吗?
问候.
我有什么:使用Android Maps API v2(本机库)的原生Android应用程序
香港和乌克兰的一切都很好.一旦我们踏入中国边境,问题就出现了.我们有下一个问题:
我对中国的了解:
问题是:
什么是没有想到的答案是"使用百度".我知道百度,这是一个veeryyy备份选项,只要他们有一个api docs in chineese.
需要补充的是,基于ditu.google.cn的Geocoding API运行良好.
期待,谢谢!
android google-maps android-maps google-maps-android-api-2 android-maps-v2
当我在AndroidManifest中添加Activity时,我收到的错误是没有具体的类.请帮我通过删除活动的抽象类来解决问题,但它无法解决.
public abstract class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_fragment);
setUpMap();
}
@Override
protected void onResume() {
super.onResume();
setUpMap();
}
@Override
public void onMapReady(GoogleMap map) {
if (mMap != null) {
return;
}
mMap = map;
startDemo();
}
private void setUpMap() {
((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
}
/**
* Run the demo-specific code.
*/
protected abstract void startDemo();
protected GoogleMap getMap() {
return mMap;
}
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序使用谷歌地图功能,需要在设备上安装和启用Google Play服务.我想测试一个案例,如果用户手动禁用谷歌播放服务请求用户启用它,以便应用程序可以正常工作.所以我需要针对这种情况测试我的代码,但我不知道如何在手机上禁用(不卸载)Google Play服务并检查我的代码是否正常工作.
谢谢
我正在开发一个应用程序,将谷歌地图(api v2)显示为片段.当应用程序加载时,它会在显示地图之前显示一个空白的白色屏幕几秒钟.我已经使用了日志语句来查看延迟的位置,但我不知道它为什么这么慢.
这是我的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate Start -------------------------------");
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate 1 -------------------------------");
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate 2 -------------------------------");
do_async_setup();
Log.i(TAG, "onCreate 3 -------------------------------");
prefs = getSharedPreferences(PREFS_NAME, 0);
prefs_editor = prefs.edit();
Log.i(TAG, "onCreate Finish -------------------------------");
Run Code Online (Sandbox Code Playgroud)
这是输出.
01-20 10:05:28.802: I/HeadsUp(19544): onCreate Start -------------------------------
01-20 10:05:28.802: I/HeadsUp(19544): onCreate 1 -------------------------------
01-20 10:05:30.396: I/HeadsUp(19544): onCreate 2 -------------------------------
01-20 10:05:30.396: I/HeadsUp(19544): onCreate 3 -------------------------------
01-20 10:05:30.403: I/HeadsUp(19544): onCreate Finish -------------------------------
Run Code Online (Sandbox Code Playgroud)
你可以看到setContentView有1.5秒的延迟.这是我的布局.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android" …Run Code Online (Sandbox Code Playgroud) 有没有办法禁用用户点击Android InfoWindow新Mapsv2 Api版本时出现的高亮效果?
这是getIfoContent()和getInfoWindow()方法的问题.随着getInfoWindow()它的文字突出.
我是Open Street Map的新手.我做了一些研究,发现我们可以将地图下载并存储到一个文件夹中.但我没有找到任何提供离线Open Street Map的教程或示例.有人可以提供一步一步的教程,请执行离线开放街道地图的指南.我正在关注此示例http://android-coding.blogspot.com/2012/06/example-of-implementing-openstreetmap.html但现在我想在没有连接时使其可用.