0

eclipse/javaのmapViewで次の問題が発生します。

使用mapView.getOverlays()するとエラーが発生します。

mapViewを解決できません

(MapViewを使用して)mapViewにローカル変数を使用しようとしましたが、クラッシュします。mapViewはどこかで宣言されていますか?

インポートしますcom.google.android.maps.MapView;

しかし、私はコードにアクセスできず、公式ドキュメントは役に立ちませんでした

MapViewを解決できないか、フィールドではないので、あまり役に立ちませんでした

SDKをインストールし、EclipseでGoogleAPIを確認しました

プロジェクトビルドターゲット

地図を問題なく表示できます

そして私のMainActivityはMapActivityを拡張します

これが完全なコードです

package com.example.test_app;

import java.util.List;

import android.app.Activity;
import com.example.test_app.MyLocation;
import com.example.test_app.MyLocation.LocationResult;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

import android.content.Context;

import android.location.Location;
import android.location.LocationProvider;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.widget.Toast;

public class MainActivity extends MapActivity

{


/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState)

{

    super.onCreate(savedInstanceState);
    MapView mapView = (MapView) findViewById(R.id.mapview);
    if (mapView == null)
        Toast.makeText(getApplicationContext(),"mapview is null",Toast.LENGTH_SHORT).show();
    else
        mapView.setBuiltInZoomControls(true);

    setContentView(R.layout.activity_main);

    LocationResult locationResult = new LocationResult(){
        @Override
        public void gotLocation(Location loc){
            Toast.makeText(getApplicationContext()," long : " +loc.getLongitude()+ " lat :"+ loc.getLatitude(),Toast.LENGTH_SHORT).show();
            //List<Overlay> mapOverlays = mapView.getOverlays();
        }
    };
    MyLocation myLocation = new MyLocation();
    myLocation.getLocation(this, locationResult);

}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

}/* End of UseGps Activity */
4

2 に答える 2

3

これをあなたのメニフェストに追加してください

<uses-library android:name="com.google.android.maps"/>

レイアウトで

<com.google.android.maps.MapView
    android:id="@+id/mv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="---- Your Key -------"
    />

あなたにはばかげた間違いがあります。setContentViewをMapViewの宣言の上に移動します。そのため、そのエラーが発生します

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        MapView mapView = (MapView) findViewById(R.id.mv);
于 2012-09-13T10:36:32.670 に答える
1

問題は解決しました。

私は使用しなければなりませんでしたsetContentView(R.layout.activity_main);

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

愚かな間違い。

于 2012-09-13T10:52:38.293 に答える