|
@@ -14,9 +14,10 @@ import org.json.JSONObject;
|
|
|
//import baidumapsdk.demo.R;
|
|
//import baidumapsdk.demo.R;
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+import com.baidu.location.BDLocation;
|
|
|
|
|
+import com.baidu.location.BDLocationListener;
|
|
|
|
|
+import com.baidu.location.LocationClient;
|
|
|
|
|
+import com.baidu.location.LocationClientOption;
|
|
|
import com.baidu.mapapi.BMapManager;
|
|
import com.baidu.mapapi.BMapManager;
|
|
|
import com.baidu.mapapi.SDKInitializer;
|
|
import com.baidu.mapapi.SDKInitializer;
|
|
|
import com.baidu.mapapi.map.BaiduMap.OnMapClickListener;
|
|
import com.baidu.mapapi.map.BaiduMap.OnMapClickListener;
|
|
@@ -36,6 +37,7 @@ import com.baidu.mapapi.map.MarkerOptions;
|
|
|
//import com.baidu.mapapi.map.OverlayItem;
|
|
//import com.baidu.mapapi.map.OverlayItem;
|
|
|
//import com.baidu.mapapi.map.PopupClickListener;
|
|
//import com.baidu.mapapi.map.PopupClickListener;
|
|
|
//import com.baidu.mapapi.map.PopupOverlay;
|
|
//import com.baidu.mapapi.map.PopupOverlay;
|
|
|
|
|
+import com.baidu.mapapi.map.MyLocationData;
|
|
|
import com.baidu.mapapi.map.SupportMapFragment;
|
|
import com.baidu.mapapi.map.SupportMapFragment;
|
|
|
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
|
|
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
|
|
|
import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;
|
|
import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;
|
|
@@ -43,12 +45,16 @@ import com.baidu.mapapi.model.LatLng;
|
|
|
//import com.baidu.platform.comapi.basestruct.GeoPoint;
|
|
//import com.baidu.platform.comapi.basestruct.GeoPoint;
|
|
|
import com.usai.util.Network;
|
|
import com.usai.util.Network;
|
|
|
|
|
|
|
|
|
|
+import android.Manifest;
|
|
|
import android.content.Context;
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
import android.content.Intent;
|
|
|
|
|
+import android.content.pm.PackageManager;
|
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.Bitmap;
|
|
|
import android.graphics.drawable.Drawable;
|
|
import android.graphics.drawable.Drawable;
|
|
|
|
|
+import android.location.LocationListener;
|
|
|
import android.os.AsyncTask;
|
|
import android.os.AsyncTask;
|
|
|
import android.os.Bundle;
|
|
import android.os.Bundle;
|
|
|
|
|
+import android.support.v4.app.ActivityCompat;
|
|
|
import android.support.v4.app.Fragment;
|
|
import android.support.v4.app.Fragment;
|
|
|
import android.support.v4.app.FragmentManager;
|
|
import android.support.v4.app.FragmentManager;
|
|
|
import android.util.Log;
|
|
import android.util.Log;
|
|
@@ -61,7 +67,7 @@ import android.widget.Button;
|
|
|
import android.widget.TextView;
|
|
import android.widget.TextView;
|
|
|
import android.widget.Toast;
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
-public class BaiduMapFragment extends Fragment
|
|
|
|
|
|
|
+public class BaiduMapFragment extends Fragment implements BDLocationListener
|
|
|
{
|
|
{
|
|
|
private SearchTask m_task = null;
|
|
private SearchTask m_task = null;
|
|
|
String fragment_content = null;
|
|
String fragment_content = null;
|
|
@@ -252,6 +258,44 @@ public class BaiduMapFragment extends Fragment
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ private LocationClient mLocationClient;
|
|
|
|
|
+
|
|
|
|
|
+ private void initLocation() {
|
|
|
|
|
+ //定位客户端的设置
|
|
|
|
|
+ mLocationClient = new LocationClient(getContext());
|
|
|
|
|
+
|
|
|
|
|
+ //注册监听
|
|
|
|
|
+ mLocationClient.registerLocationListener(this);
|
|
|
|
|
+
|
|
|
|
|
+ //配置定位
|
|
|
|
|
+ LocationClientOption option = new LocationClientOption();
|
|
|
|
|
+ option.setCoorType("bd09ll");//坐标类型
|
|
|
|
|
+ option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
|
|
|
|
|
+ option.setOpenGps(true);//打开Gps
|
|
|
|
|
+ option.setScanSpan(1000);//1000毫秒定位一次
|
|
|
|
|
+ option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
|
|
|
|
|
+ mLocationClient.setLocOption(option);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onReceiveLocation(BDLocation bdLocation) {
|
|
|
|
|
+
|
|
|
|
|
+ //将获取的location信息给百度map
|
|
|
|
|
+ MyLocationData data = new MyLocationData.Builder()
|
|
|
|
|
+ .accuracy(bdLocation.getRadius())
|
|
|
|
|
+ // 此处设置开发者获取到的方向信息,顺时针0-360
|
|
|
|
|
+ .direction(100)
|
|
|
|
|
+ .latitude(bdLocation.getLatitude())
|
|
|
|
|
+ .longitude(bdLocation.getLongitude())
|
|
|
|
|
+ .build();
|
|
|
|
|
+
|
|
|
|
|
+ if (fragment != null) {
|
|
|
|
|
+ fragment.getMapView().getMap().setMyLocationData(data);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
class SearchTask extends AsyncTask<Void, Void, Boolean>
|
|
class SearchTask extends AsyncTask<Void, Void, Boolean>
|
|
|
{
|
|
{
|
|
|
int errorcode;
|
|
int errorcode;
|
|
@@ -595,6 +639,7 @@ public class BaiduMapFragment extends Fragment
|
|
|
|
|
|
|
|
|
|
|
|
|
requestloactions();
|
|
requestloactions();
|
|
|
|
|
+
|
|
|
return inflater.inflate(R.layout.fragment_service_location, container,
|
|
return inflater.inflate(R.layout.fragment_service_location, container,
|
|
|
false);
|
|
false);
|
|
|
}
|
|
}
|
|
@@ -618,6 +663,33 @@ public class BaiduMapFragment extends Fragment
|
|
|
// controller.setCenter(new GeoPoint((int) ( * 1E6),
|
|
// controller.setCenter(new GeoPoint((int) ( * 1E6),
|
|
|
// (int) * 1E6)));
|
|
// (int) * 1E6)));
|
|
|
// controller.setZoom(5);
|
|
// controller.setZoom(5);
|
|
|
|
|
+
|
|
|
|
|
+ if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
|
|
|
|
+ // TODO: Consider calling
|
|
|
|
|
+ // ActivityCompat#requestPermissions
|
|
|
|
|
+ // here to request the missing permissions, and then overriding
|
|
|
|
|
+ // public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
|
|
|
|
+ // int[] grantResults)
|
|
|
|
|
+ // to handle the case where the user grants the permission. See the documentation
|
|
|
|
|
+ // for ActivityCompat#requestPermissions for more details.
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ fragment.getMapView().getMap().setMyLocationEnabled(true);
|
|
|
|
|
+ initLocation();
|
|
|
|
|
+ if(mLocationClient != null && !mLocationClient.isStarted()){//如果定位client没有开启,开启定位
|
|
|
|
|
+ mLocationClient.start();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onPause() {
|
|
|
|
|
+ super.onPause();
|
|
|
|
|
+
|
|
|
|
|
+ if(mLocationClient != null && mLocationClient.isStarted()){//如果定位client开启,关闭定位
|
|
|
|
|
+ mLocationClient.stop();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public BaiduMarkerClickListener markerClickListener;
|
|
public BaiduMarkerClickListener markerClickListener;
|