1

地図上で、自分の場所から特定の場所への経路の方向を表示したいと考えています。マップ上にパスを描画するためのロジックは既に実装していますが、現在の場所を特定するのに問題があります。

この記事http://developer.android.com/training/location/retrieve-current.htmlで説明されているように、現在の場所を取得するために新しい LocationClient を使用しています。新しいマップ API をどこかで読んだことがあります。 v2 は、自分の位置を取得するために同じ手法を使用しています。

とにかく、自分の場所から目的の場所までのパスの方向を地図上に描くと、パスの開始点が現在の場所を示す青い点とは異なります。

青い点は正しい位置を示していますが、私の実装ではそうではありません。それで、青いドットマーカーの座標を取得する方法はありますか、map.getMyLocationMarker().getLocation()または自分の場所を手動で取得する他の方法を見つける必要がありますか?

アップデート

この質問を開いたままにしておくのを忘れていましたが、以下に私の答えを示します。

4

4 に答える 4

2

googlemyMap.getMyLocation() メソッドは廃止されたため...

これまでに見つけた最高のシンプルなソリューション

現在位置を取得し、カメラをマーカーに合わせます。Android Studio エディタではエラーが表示されますが、実行するとコードに問題はありません。

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));
if (location != null)
{    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

        if (location != null)
        {
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));

            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(location.getLatitude(), location.getLongitude()))      // Sets the center of the map to location user
                    .zoom(17)                   // Sets the zoom
                    .build();                   // Creates a CameraPosition from the builder
            mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
        LatLng goztepe = new LatLng(location.getLatitude(), location.getLongitude());
        mMap.addMarker(new MarkerOptions().position(goztepe).title("Göz Göz GÖZTEPE"));

ここで説明します。

于 2016-10-05T16:30:44.437 に答える
0

元の答えは、setMyLocationChangeListener()onGoogleMapを使用して、「青い点」の変更を通知することでした。それは現在非推奨です。

問題を再現するサンプル プロジェクトを作成できる場合は、そのプロジェクトを添付してissue を提出することをお勧めします。あなたがやっていることは、廃止されたメソッドの公式の置き換えであるため、コードが適切に機能することを願っています。もしあなたが問題を提起し、それについて考えているなら、私はそれを監視したいので、ここにリンクを投稿してください.

于 2013-06-03T22:38:54.913 に答える
-1

それは実際に私が犯した本当にばかげた間違いでした。

しかし、ここに答えがあります。質問のリンクに記載されている手順は正しいことです。

私の問題は、取得したデータを新しい共有設定キーに保存し、間違った場所に保存された古いものから読み取っていたことです。ええ、それはかなりばかげています:)

したがって、Android Developer Portal のチュートリアルに従ってください。間違いはありません。

于 2013-07-01T10:40:02.213 に答える