Google マップ v2 - 現在地とズームインの両方を設定する 質問する

Google マップ v2 - 現在地とズームインの両方を設定する 質問する

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

現在、メインビューは、最大限にズームアウトされたアフリカに開かれています。

それで私は何日も検索してきましたが、見つけたのは次のものだけです。

1) 1 つの Google マップで 2 つのこと (ズームインして自分の場所に移動するなど) をアニメーション化することはできませんか? アニメーションを設定する前にズームを設定する方法がわかれば、この問題は解決します。これが問題になる傾向があり、1 つを変更することはできますが、両方を変更することはできません。

2) 役に立つかもしれない他のクラスを見つけましたが、クラスが Google マップを操作できるようにコードを設定する方法についてのヘルプがありません。

これは私がこれまで保持してきたコードです。動作するものもあれば、動作しないものもあります。後から役に立つかもしれないと思ったものもあります。

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

1 つの Google マップで 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 つのイベントに統合するかどうかは、あまりにも速く進むためわかりません。 :-)

サンプルプロジェクトはこちらそこから上記のコードを抜粋しました。


申し訳ありませんが、この回答には欠陥があります。ロブの答えこれを本当に 1 回のショットで実行するには、 を作成しCameraPositionCameraUpdateその から を作成しますCameraPosition

おすすめ記事