1. ホーム
  2. android

[解決済み] Google Maps v2 - 現在地とズームインの両方を設定する

2022-08-02 14:24:26

質問

私の質問は、Google マップを設定して、現在地と拡大表示の両方を表示する方法を知っている人はいますか?

現在、メインのビューはアフリカまで開き、ずっとズームアウトしています。

それで、もう何日も検索しているのですが、出てくるのは

1) 1つのグーグルマップで2つのこと(ズームインして自分の場所に行くなど)をアニメーション化することはできないのでしょうか?つまり、アニメーションを設定する前にズームを設定する方法を見つけられれば、この問題は解決します。片方は変更できても、両方は変更できないという問題があります。

2) 役に立ちそうな他のクラスを見つけましたが、そのクラスがグーグルマップを操作できるようにコードをセットアップする方法についてのヘルプはありません。

これは、私がこれまで保持してきたコードで、いくつかは動作し、いくつかは動作しません。いくつかは、後で役に立つかもしれないと思いました。

package com.MYWEBSITE.www;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;

public class MainActivity extends FragmentActivity {
private GoogleMap map;  

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

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    map.setMyLocationEnabled(true);

    //LocationSource a = (LocationSource) getSystemService(Context.LOCATION_SERVICE);
    //LocationManager b = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    //map.setLocationSource(a);

    Criteria criteria = new Criteria();
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    double lat =  location.getLatitude();
    double lng = location.getLongitude();
    LatLng coordinate = new LatLng(lat, lng);

    //CameraPosition.Builder x = CameraPosition.builder();
    //x.target(coordinate);
    //x.zoom(13);

    //Projection proj = map.getProjection();
    //Point focus = proj.toScreenLocation(coordinate);

    //map.animateCamera(CameraUpdateFactory.newLatLng(coordinate));
    map.animateCamera(CameraUpdateFactory.zoomBy(13));
    //map.moveCamera(CameraUpdateFactory.newLatLng(coordinate));


    ////LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
}
}

どのように解決するのですか?

<ブロッククオート

1つのgoogle mapで2つのこと(例えば、ズームインして自分の場所に行く)をアニメーションさせることはできないのでしょうか?

コーディングの観点からは、それらを順次行うことになります。

    CameraUpdate center=
        CameraUpdateFactory.newLatLng(new LatLng(40.76793169992044,
                                                 -73.98180484771729));
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(15);

    map.moveCamera(center);
    map.animateCamera(zoom);

ここでは、まずカメラを動かし、次にカメラをアニメートしていますが、どちらも animateCamera() の呼び出しがあります。どちらかというと GoogleMap がこれらを1つのイベントに統合しているかどうかは、あまりに早く過ぎてしまうので分かりません :-)

以下はサンプルプロジェクトです。 から、上記のコードを引っ張ってきました。


申し訳ありませんが、この回答は欠陥があります。参照 ロブの回答 を参考に、一発でできる方法として CameraPosition を作成し、さらに CameraUpdate から CameraPosition .