2011-12-05 14 views
-1

私はAndroidアプリケーションを作成しており、Googleマップを画面に表示して実行しています。しかし、最初にマップをロードするときにポイントにスナップしたいと思います。私。ロンドン。Androidアプリケーション - animateTo()を使用するGoogle Maps APIを取得するにはどうすればよいですか?

私は検索し、さまざまな方法を試しましたが、動作させることができません。

パブリッククラス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 

ライン61でのNullPointerException:MapController snapToMap = mapView.getController()。

どうすればこの問題を解決できますか?

+0

なぜこれを「iPhone」とタグ付けしましたか?私は間違っていたので、そのタグを削除しました。関連するトピックの質問のみにタグを付けます。 –

+0

実行時エラーにより、何をすべきかがわかります。 logcatを見てスタックトレースを取得し、ここに投稿してください。 – Craigy

+0

メソッド名と変数名の両方に 'SnapToMap'を使用していますか? Javaでは、変数は変数名とメソッド名の最初の文字として小文字を使用しています。また、あなたのコードの書式設定は混乱します。あなたが持っているものと一致するかどうか確認できますか?また、例外は、61行目のヌルポインタを指しているので、それ自身をすべてポストしてください。 – Craigy

答えて

1

あなたのmapViewを有効にしないでください。あなたがあなたのレイアウトXMLにそれを持っているなら、あなたは何かのようにそれを見つける必要があります。

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

代わりに、あなたは何かのコードで新しいことができます。

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

次に、ビューに追加する必要があります。

+0

あなたは素晴らしいです!私はそれを初期化し、それは働いた!メイト、私はあなたを愛しています。 – Zukky

+0

あなたは自分でそれを働かせることを学ぶべきです。 stacktraceは、あなたに正確な関心のある行を与えます。それがintやfloatのようなものでなければ、常にあなたのオブジェクトをどこかから取得する必要があります。 – Ifor

+0

stacktrace?それはLogCatですか?それはNullPointerExceptionについて私に語っただけです。私はかなり新しく、NullPointerExceptionに関するオンラインドキュメントを読んでいますが、実際には解決されませんでした。 – Zukky

関連する問題