2017-06-19 201 views
0

当我运行此代码时,地图加载。但是,即使将其设置为setZoom(20),它也会极度缩小。 (无论我设置为什么,它仍然不会改变。)
取而代之,我想将位置设置为用户的当前位置,如果不是,那么我想通过使用geoPoint来自己设置位置。将onLocationChanged设置为特定的经度和纬度并将其放大

import android.Manifest; 
import android.app.Activity; 
import android.content.pm.PackageManager; 
import android.os.Bundle; 
import android.location.LocationManager; 
import android.location.LocationListener; 
import android.location.Location; 
import android.content.Context; 
import android.support.v4.app.ActivityCompat; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.MapView; 
import org.osmdroid.tileprovider.tilesource.TileSourceFactory; 


public class HelloMap extends Activity { 

MapView mv; 
public View onCreateView(LayoutInflater lf, ViewGroup vg, Bundle b) 
{ 
    View view = lf.inflate(R.layout.content_hello_map, vg, false); 
    mv = (MapView) view.findViewById(R.id.map1); 
    mv.setTileSource(TileSourceFactory.MAPNIK); 
    mv.setBuiltInZoomControls(true); 
    mv.getController().setZoom(20); 
    mv.getController().setCenter(new GeoPoint(20, -20)); 
    return view; 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content_map); 
    LocationManager mgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener Locat= new mylocationlistener(); 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

     return; 
    } 
    mgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, Locat); 
} 

private class mylocationlistener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     if (location != null) { 

      Toast.makeText(HelloMap.this, 
        location.getLatitude() + "" + location.getLongitude(), 
        Toast.LENGTH_LONG).show(); 
     } 
    } 
    @Override 
    public void onProviderDisabled(String provider) { 
    } 
    @Override 
    public void onProviderEnabled(String provider) { 
    } 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
    } 
    } 
+0

后requestLocationUpdates如果位置没有改变,那么你可以调用getLastKnownLocation(字符串),并立即检索位置并进行设置。 – RameshJaga

回答

1

我认为你需要使用CameraUpdateFactory与方法newLatLngZoom(LatLng latLng, float zoom)。 例如:

LatLng coordinate = new LatLng(lat, lng); 
CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 5); 
map.animateCamera(yourLocation);