将onLocationChanged设置为特定的经度和纬度并将其放大
问题描述:
当我运行此代码时,地图加载。但是,即使将其设置为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) {
}
}
}
答
我认为你需要使用CameraUpdateFactory
与方法newLatLngZoom(LatLng latLng, float zoom)
。 例如:
LatLng coordinate = new LatLng(lat, lng);
CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 5);
map.animateCamera(yourLocation);
后requestLocationUpdates如果位置没有改变,那么你可以调用getLastKnownLocation(字符串),并立即检索位置并进行设置。 – RameshJaga