2011-12-05 46 views
-1

我正在创建一个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();

我该如何摆脱这个?

+0

你为什么把这个标记为'iPhone'?我删除了该标签,因为它不正确;只标记你的问题的主题,他们有关。 –

+0

运行时错误会告诉你该怎么做。在logcat中查看以获取堆栈跟踪并将其发布到此处。 – Craigy

+0

你是否使用'SnapToMap'作为方法名和变量名? FYI中的惯例是使用小写字母作为变量和方法名称中的第一个字符。此外,你的代码格式很混乱,你能确保它符合你的要求吗?此外,异常指向第61行的空指针,因此请自行发布。 – Craigy

回答

1

你不initalising你的mapView。如果你在你的布局xml中使用它,你需要用类似的东西来找到它。

mapView = (MapView) findViewById(R.id.map_view); 

另外,你可以在类似的代码中新增它。

mapView = new MapView(this, "Your map API key here...n"); 

然后,您需要将它添加到您的视图。

+0

你真了不起!我初始化它,它工作!伴侣,我爱你。 – Zukky

+0

你应该学会自己解决。堆栈跟踪为您提供了确切的兴趣点。除非它像int和float这样的东西,否则你总是必须从某个地方设置你的对象。 – Ifor

+0

堆栈跟踪?那是LogCat吗?它只告诉我关于NullPointerException。我是相当新的,我阅读了关于NullPointerException的在线文档,但它并没有真正导致任何解决方案。 – Zukky

相关问题