繁体   English   中英

如何在开始时设置位置-Google Maps API V2

[英]How to set location on start - Google Maps API V2

您好,目前,当我启动该应用程序时,它将显示整个世界地图,当我按gps按钮时,它将放大到我的当前位置。 我希望活动开始时已经放大到您当前的位置。 这是源代码:

public class MainActivity extends Activity {

    // Google Map
    private GoogleMap googleMap;

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

        try {
            // Loading map
            initilizeMap();

            // Changing map type
            googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
            // googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

            // Showing / hiding your current location
            googleMap.setMyLocationEnabled(true);

            // Enable / Disable zooming controls
            googleMap.getUiSettings().setZoomControlsEnabled(true);

            // Enable / Disable my location button
            googleMap.getUiSettings().setMyLocationButtonEnabled(true);

            // Enable / Disable Compass icon
            googleMap.getUiSettings().setCompassEnabled(true);

            // Enable / Disable Rotate gesture
            googleMap.getUiSettings().setRotateGesturesEnabled(true);

            // Enable / Disable zooming functionality
            googleMap.getUiSettings().setZoomGesturesEnabled(true);



        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }

    /**
     * function to load map If map is not created it will create it for you
     * */
    private void initilizeMap() {
        if (googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                    R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }




}

您需要使用“ Location Listener获取“ Current Location Location Listener并在其上设置“相机”动画。

首先为您的Activity实现LocationListener ,如下所示:

public class BasicMapActivity_new extends Activity implements LocationListener 

现在在您的Activity onCreate(....)实现以下代码

private LocationManager locationManager;
private String provider;

 LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
    boolean enabledGPS = service
            .isProviderEnabled(LocationManager.GPS_PROVIDER);
    boolean enabledWiFi = service
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    if (!enabledGPS) {
        Toast.makeText(BasicMapActivity_new.this, "GPS signal not found", Toast.LENGTH_LONG).show();
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(intent);
    }
    else if(!enabledWiFi){
           Toast.makeText(BasicMapActivity_new.this, "Network signal not found", Toast.LENGTH_LONG).show();
           Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
           startActivity(intent);
    }

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    // Define the criteria how to select the locatioin provider -> use
    // default
    Criteria criteria = new Criteria();
    provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    //getCurrentLocation();

    // Initialize the location fields
    if (location != null) {
       // Toast.makeText(BasicMapActivity_new.this, "Selected Provider " + provider,
                //Toast.LENGTH_SHORT).show();
        onLocationChanged(location);
    } else {

        //do something
    }
    initilizeMap();

现在实现onLocationChanged(.....)

        Marker startPerc=null;
    @Override
    public void onLocationChanged(Location location) {

        double lat =  location.getLatitude();
        double lng = location.getLongitude();

        LatLng coordinate = new LatLng(lat, lng);

        startPerc = mMap.addMarker(new MarkerOptions()
             .position(coordinate)
             .title("Current Location")
             .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));  

      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinate, 18.0f));

 }

并实施

@Override
protected void onPause() {
    super.onPause();
    locationManager.removeUpdates(this);
  }

@Override
protected void onResume() {
    super.onResume();
     locationManager.requestLocationUpdates(provider, 400, 1, this);
    initilizeMap();
  }

并在manifest.xml文件中添加以下permission

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我猜你可以使用类似的东西:

function initialize() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 5,
center: new google.maps.LatLng(53.671068, -130.25128),
mapTypeId: google.maps.MapTypeId.TERRAIN
});

Google开发人员页面上有许多使用Google Maps API的示例代码。 看看: 简单的Google Maps

谢谢,诺埃尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM