1

Google Maps API (v2) に慣れ、それを Android アプリに統合しましたが、最適な方法が見つからないという 2 つの質問があります。

1 つ目は、常に現在のユーザーの位置に焦点を当てることです (GPS アプリケーションなど)。私がしたことは、onCreateでユーザーの場所を取得することです(あちこちで見つけたものによると))

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);

        MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);

        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        String bestProvider = locationManager.getBestProvider(criteria, true);
        Location location = locationManager.getLastKnownLocation(bestProvider);
        LatLng currentUserPosition = new LatLng(location.getLatitude(), location.getLongitude());
        // setting the cam position to current position
        CameraPosition camPosition = new CameraPosition(currentUserPosition, 17f, 30f, 0f);
        CameraUpdate update = CameraUpdateFactory.newCameraPosition(camPosition);
        mapFragment.getMap().animateCamera(update);

        // updating map every second
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                1000, // 1-second interval.
                10, // 10 meters.
                listener);
}

次のように構成されている場所listenerは次のとおりです。LocationListener

private final LocationListener listener = new LocationListener() {

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onLocationChanged(Location location) {
        CameraPosition camPosition = new CameraPosition(new LatLng(location.getLatitude(), location.getLongitude()), 17f, 30f, 0f);
        MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
        CameraUpdate update = CameraUpdateFactory.newCameraPosition(camPosition);
        mapFragment.getMap().animateCamera(update);
    }
};

これは正しい方法ですか?
2 つ目は、ユーザーがマップに触れて、マップ上にマーカーを動的に追加できることです (独自のタイトルなどを使用)。マーカー間にパスを描画し、GPS アプリケーションのように動作する方法を見つけようとしました (しかし、しませんでした)。これは可能ですか?
ありがとうございました

4

2 に答える 2

0

実際には、Google Map API V2次のものを使用できます。

map.setMyLocationEnabled(true);

これにより、Google マップ ウィンドウにアイコンが作成され、ユーザーの現在地が追跡されます。実際には、全体を実装する方が簡単だと思いますLocationListener

マーカーの質問については、ユーザーがすべてのマーカーデータを設定できる何らかのウィンドウを実装する必要があります。次に、次のようにマーカーを動的に追加できます。

marker = map.addMarker(new MarkerOptions().position(latlng).title(markersTitleArray[i]).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));

マップをクリックしてこのマーカーを追加する場合は、次を実装する必要があります。

map.setOnMapClickListener(this);
map.setOnMapLongClickListener(this);

あなたのActivity

Polyline最後に、道順を地図上に描画する方法についての私の回答が既に提供されているため、最後の質問について:

GoogleMap 上の 2 つのジオポイント間のドライブ ルートを描画します

于 2013-04-21T13:27:48.107 に答える