1

すべてがうまくいっているようです。私の位置を見つけることはできますが、onLocationChanged() メソッドを呼び出してマーカーを作成することはありません。何か案は?

public class MainActivity extends FragmentActivity implements LocationListener
{
Context context = this;
GoogleMap googlemap;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initMap();

    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    String provider = lm.getBestProvider(new Criteria(), true);
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, this);
}

public void onLocationChanged(Location location) {
    LatLng current = new LatLng(location.getLatitude(), location.getLatitude());
    Date date = new Date();

    googlemap.addMarker(new MarkerOptions()
            .title("Current Pos")
            .snippet(new Timestamp(date.getTime()).toString())
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
            .position(current)
            );
}

public void onStatusChanged(String provider, int status, Bundle extras) {
}

public void onProviderEnabled(String provider) {
}

private void initMap(){
    SupportMapFragment mf = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    googlemap = mf.getMap();

    googlemap.setMyLocationEnabled(true);
    googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
}
4

3 に答える 3

2

アクティビティはLocationSourceインターフェイスを実装する必要があり、MainActivityクラスをロケーションソースとして使用するにはGoogleMapを登録する必要があります。

クラス宣言を次のように変更します。

public class MainActivity extends FragmentActivity implements LocationListener, LocationSource

そして、GoogleMapのLocationSourceを設定します

//This is how you register the LocationSource for the map
googleMap.setLocationSource(this);

より完全な例については、この回答を参照してください。

于 2013-02-16T00:14:27.337 に答える
0

Wi-Fiをオンにしていますか?すべてが明確に定義されているようです。

于 2013-02-15T01:35:24.010 に答える
0

Wi-Fi 信号が弱く、接続に問題がある可能性がありますか? GPS プロバイダーから現在地の更新を取得してみてください。

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, this);

実際、ユーザーがどちらのプロバイダーからでも自分の位置情報を取得できるように、常に両方を含めています。また、onLocationChanged コールバックにログ ステートメントを含めてみてください。メソッドが実際に呼び出されていることが判明した場合、問題は位置の取得ではなく、マーカーの追加にあることがわかります。

于 2013-02-15T02:07:13.140 に答える