0

Android にマップを追加したいのですが、MapActivity を拡張できません。これは、マップがタブにあり、Fragment を拡張するためです。

だから私は WebView を使用しています、私はこのコードに従いました:

https://developers.google.com/maps/articles/android_v3

問題は、私が持っているhtmlファイルにマーカーを追加しようとしたときです:

  function createMarker(lat, lng){
var latlng = new google.maps.LatLng(lat, lng);           
var marker = new google.maps.Marker({
    position: latlng,
    map: map
});

return marker

これにアクセスする方法がわからないので、問題は「マップ」にあると思います。

4

4 に答える 4

3

まず、次のような別のクラスを作成する必要があります。

public class Exchanger extends FragmentMapActivity {

    public static MapView mapView;

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }

}

次に、フラグメントクラスでクラス名を使用してマップビューを呼び出し、マップにマーカーを追加します

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    mMapView = Exchanger.mapView;
于 2012-05-15T11:27:08.357 に答える
0

Fragment 内で MapActivity を使用する方法があります。LocalActivityManager を使用して Activity を作成し、Fragment 内に表示する Fragment のちょっとしたハックです。

詳細については、この質問を参照してください: MapView in a Fragment (Honeycomb)

これはあまり良い解決策ではありませんが、フラグメント内に Android マップを表示する唯一の方法です。これにより、MapItem を処理するための正しい API を使用できるようになります。これらも Android の最も優れた部分ではありませんが、webview ソリューションよりも開発が速く、ユーザーの使いやすさも向上します。

于 2012-05-15T12:31:45.347 に答える
0

マップを適切に初期化する必要があります。入門チュートリアルを参照してください。

于 2012-05-15T11:20:29.470 に答える
0

extends はできませんがMapActivity、implements はできますLocationListener。したがって、メソッド呼び出しを取得しますonLocationChanged。その方法であなたは得ることができますGeoPoint

geoPoint = new GeoPoint((int) (location.getLatitude() * 1E6) , (int) (location.getLongitude() * 1E6));

次に、クラスを拡張する独自のクラスを作成できますOverlay。そこでメソッド call を取得しますdraw。その方法では、独自のポイントを作成できます。以下のコード例...

        Point screenPoints = new Point();
        mapView.getProjection().toPixels(geoPoint, screenPoints);

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pushpin);

        canvas.drawBitmap(bitmap, screenPoints.x, screenPoints.y, null);

これがお役に立てば幸いです。

于 2012-05-15T11:27:39.823 に答える