我正在创建一个Android应用程序,并且我已经在屏幕上启动并运行了Google地图。不过,我想在第一次加载地图时捕捉到一点。即伦敦。Android应用程序 - 如何让Google Maps API使用animateTo()?
我已经四处搜寻,尝试了不同的方法,但是我无法让它工作。
公共类MinuteMapActivity扩展MapActivity {
MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//the methods on the map are initialised here
SnapToMap();
}
MapController SnapToMap = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"}; //these values are from a website, how do I get the co-ordinates from google maps for i.e. London?
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
GeoPoint gp = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));
SnapToMap.animateTo(gp);
SnapToMap.setZoom(15);
mapView.invalidate();
}
这是我写的。难道我做错了什么?它不断出现运行时错误并关闭应用程序。我是否需要向XML布局添加一些内容?有人可以解释什么是mapView.invalidate()吗?我此源代码的部分从mobiforge.com
logcat的结果:
12-05 01:15:07.245: D/AndroidRuntime(18945): Shutting down VM
12-05 01:15:07.245: W/dalvikvm(18945): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
12-05 01:15:07.250: E/AndroidRuntime(18945): FATAL EXCEPTION: main
12-05 01:15:07.250: E/AndroidRuntime(18945): java.lang.RuntimeException: Unable to start activity ComponentInfo{application.project.minutemap/application.project.minutemap.MinuteMapActivity}: java.lang.NullPointerException
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.os.Looper.loop(Looper.java:130)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.ActivityThread.main(ActivityThread.java:3691)
12-05 01:15:07.250: E/AndroidRuntime(18945): at java.lang.reflect.Method.invokeNative(Native Method)
12-05 01:15:07.250: E/AndroidRuntime(18945): at java.lang.reflect.Method.invoke(Method.java:507)
12-05 01:15:07.250: E/AndroidRuntime(18945): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
12-05 01:15:07.250: E/AndroidRuntime(18945): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
12-05 01:15:07.250: E/AndroidRuntime(18945): at dalvik.system.NativeStart.main(Native Method)
12-05 01:15:07.250: E/AndroidRuntime(18945): Caused by: java.lang.NullPointerException
12-05 01:15:07.250: E/AndroidRuntime(18945): at application.project.minutemap.MinuteMapActivity.SnapToMap(MinuteMapActivity.java:61)
12-05 01:15:07.250: E/AndroidRuntime(18945): at application.project.minutemap.MinuteMapActivity.onCreate(MinuteMapActivity.java:24)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-05 01:15:07.250: E/AndroidRuntime(18945): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
12-05 01:15:07.250: E/AndroidRuntime(18945): ... 11 more
的NullPointerException在61行:MapController snapToMap = mapView.getController();
我该如何摆脱这个?
你为什么把这个标记为'iPhone'?我删除了该标签,因为它不正确;只标记你的问题的主题,他们有关。 –
运行时错误会告诉你该怎么做。在logcat中查看以获取堆栈跟踪并将其发布到此处。 – Craigy
你是否使用'SnapToMap'作为方法名和变量名? FYI中的惯例是使用小写字母作为变量和方法名称中的第一个字符。此外,你的代码格式很混乱,你能确保它符合你的要求吗?此外,异常指向第61行的空指针,因此请自行发布。 – Craigy