百度地图系列06——以定位点为中心自定义画圆
首先,对MapStatusUpdateFactory的一些方法进行说明:
限定符和类型 方法和说明
static MapStatusUpdate newLatLng(LatLng latLng)
设置地图新中心点
static MapStatusUpdate newLatLngZoom(LatLng latLng, float zoom)
设置地图中心点以及缩放级别
然后对CircleOptions的几个参数和方法进行说明:
限定符和类型 方法和说明
CircleOptions center(LatLng center)
设置圆心坐标
CircleOptions extraInfo(Bundle extraInfo)
设置圆额外信息
CircleOptions fillColor(int color)
设置圆填充颜色
LatLng getCenter()
获取圆心坐标
Bundle getExtraInfo()
获取圆额外信息
int getFillColor()
获取填充颜色
int getRadius()
获取圆半径,单位 :米
Stroke getStroke()
获取圆边框信息
int getZIndex()
获取圆 zIndex 信息
boolean isVisible()
获取圆是否可见
CircleOptions radius(int radius)
设置圆半径
CircleOptions stroke(Stroke stroke)
设置圆边框信息
CircleOptions visible(boolean visible)
设置圆是否可见
CircleOptions zIndex(int zIndex)
设置圆 zIndex 信息
百度api如下:
代码:
package com.yds.newpowerbike.fragment;
import android.app.Activity;
import android.app.Fragment;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.CircleOptions;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.model.LatLng;
import com.yds.newpowerbike.R;
public class HomeFragment extends Fragment {
private Activity activity;
private MapView mMapView;
public MyLocationListener myListener = new MyLocationListener();
BaiduMap mBaiduMap;
LocationClient mLocClient;
boolean isFirstLoc = true;
boolean isLocationClientStop = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreateView(inflater, container, savedInstanceState);
this.activity = getActivity();
SDKInitializer.initialize(activity.getApplicationContext());
return inflater.inflate(R.layout.fragment_home, container,false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
SharedPreferences shared = activity.getSharedPreferences("latlng", 0);
mMapView = (MapView) activity.findViewById(R.id.mapview);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
mLocClient = new LocationClient(activity);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setCoorType("bd09ll");//bd09LL
option.setScanSpan(1000);
mLocClient.setLocOption(option);
mLocClient.start();
Log.i("LatLng", shared.getString("Lat", "this is null"));
}
public class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
// TODO Auto-generated method stub
if(location == null||isLocationClientStop)
return;
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
.direction(100)
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
mBaiduMap.setMyLocationData(locData);
if(isFirstLoc){
isFirstLoc = false;
//定位点坐标
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
//设置地图中心点和缩放级别
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 13);
//以动画方式更新地图状态,动画耗时 300 ms
mBaiduMap.animateMapStatus(u);
//画圆,主要是这里
OverlayOptions ooCircle = new CircleOptions().fillColor(0x384d73b3)
.center(ll).stroke(new Stroke(3, 0x784d73b3))
.radius(5000);
mBaiduMap.addOverlay(ooCircle);
}
}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
// mLocClient.stop();
// mBaiduMap.setMyLocationEnabled(false);
// mMapView = null;
mMapView.onDestroy();
super.onDestroy();
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
mMapView.onPause();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
mMapView.onResume();
}
}
运行截图: