百度定位开发,获取经纬度并自定义定位点图标
方法一、
public class MainActivity extends AppCompatActivity {
private BaiduMap baiduMap;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
MapView mapView=findViewById(R.id.map);
baiduMap = mapView.getMap();
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
MyLocation location = new MyLocation();
LocationClient client = new LocationClient(this);
client.registerLocationListener(location);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setCoorType("bd0911");
option.setScanSpan(1000);
client.setLocOption(option);
client.start();
}
class MyLocation extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
double latitude = bdLocation.getLatitude();
double longitude = bdLocation.getLongitude();
Log.i("hh", longitude + " " + latitude);
LatLng point=new LatLng(latitude,longitude);
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.hza);
OverlayOptions o1=new TextOptions().text("家乡").fontSize(50).position(point);
OverlayOptions o2=new MarkerOptions()
.position(point)
.icon(bitmap)//perspective透视效果设置
.perspective(true).animateType(MarkerOptions.MarkerAnimateType.jump);
baiduMap.clear();//地图清除标记
baiduMap.addOverlay(o1);
baiduMap.addOverlay(o2);
MapStatus mMapStatus = new MapStatus.Builder().target(point).zoom(20).build();//zoom设置地图缩放级别
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
baiduMap.setMapStatus(mMapStatusUpdate);// 设置地图放大缩小参数
}
}
}
方法二、
public class MainActivity extends AppCompatActivity {
private BaiduMap baiduMap;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
MapView mapView=findViewById(R.id.map);
baiduMap = mapView.getMap();
// requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
MyLocation location = new MyLocation();
LocationClient client = new LocationClient(this);
client.registerLocationListener(location);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setCoorType("bd0911");
option.setScanSpan(1000);
client.setLocOption(option);
client.start();
}
class MyLocation extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
double latitude = bdLocation.getLatitude();
double longitude = bdLocation.getLongitude();
Log.i("hh", longitude + " " + latitude);
LatLng point=new LatLng(latitude,longitude);
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.hza);
OverlayOptions o1=new TextOptions().text("我的位置").fontSize(15).position(point);
OverlayOptions o2=new MarkerOptions()
.position(point)
.icon(bitmap)//perspective透视效果设置
.perspective(true).animateType(MarkerOptions.MarkerAnimateType.jump);
baiduMap.addOverlay(o1);
baiduMap.addOverlay(o2);
MapStatus mMapStatus = new MapStatus.Builder().target(point).zoom(20).build();//zoom设置地图缩放级别
/**
* 将定位到的地方移到地图中央
*/
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(point);
baiduMap.setMapStatus(msu);// 设置地图放大缩小参数
baiduMap.animateMapStatus(msu);
}
}
}
以上两者的xml一样,如下形式、
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.baidu.mapapi.map.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>