我的代码是这样的
package com.chenxi.bimquanziguankong.activity;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.CameraUpdateFactory;
import com.amap.api.maps2d.LocationSource;
import com.amap.api.maps2d.MapView;
import com.amap.api.maps2d.UiSettings;
import com.amap.api.maps2d.model.BitmapDescriptorFactory;
import com.amap.api.maps2d.model.LatLng;
import com.amap.api.maps2d.model.Marker;
import com.amap.api.maps2d.model.MarkerOptions;
import com.amap.api.maps2d.model.MyLocationStyle;
import com.amap.api.maps2d.model.PolygonOptions;
import com.blankj.utilcode.util.ToastUtils;
import com.chenxi.bimquanziguankong.R;
import com.chenxi.bimquanziguankong.entity.ProjectInfo;
import com.chenxi.bimquanziguankong.utils.LocationUtil;
import java.util.ArrayList;
import java.util.List;
import pub.devrel.easypermissions.EasyPermissions;
public class ProjectSurveyActivity extends BaseActivity implements LocationSource, EasyPermissions.PermissionCallbacks {
private Context context;
private ProjectInfo projectInfo;//从ProjectChooseActivity传过来的ProjectInfo
private AMapLocationClient aMapLocationClient;
private AMapLocationClientOption clientOption;
private TextView projectSurvey;
private ImageView back;
private MapView mapView;
private AMap aMap;
private LocationSource.OnLocationChangedListener mListener = null;//定位监听器
private LocationUtil locationUtil;
private String[] jiweiData;
private double mlat, mlgt;
private String Coordinate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_project_survey);
//获取从ProjectChooseActivity传递过来的数据
Intent intent = getIntent();
projectInfo = (ProjectInfo) intent.getSerializableExtra("projectInfo");
Coordinate = projectInfo.getCoordinate();
Log.e("TAG", "噢噢噢噢 " + Coordinate);
projectSurvey = findViewById(R.id.tv_project_survey);
if (projectInfo.getDescription() != null) {
projectSurvey.setText(projectInfo.getDescription());//概况描述
}
projectSurvey.setMovementMethod(ScrollingMovementMethod.getInstance());//把TextView设置成可滑动
projectSurvey = findViewById(R.id.tv_project_survey);
back = findViewById(R.id.toolbar_left_btn);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mapView = findViewById(R.id.project_survey_map);
// 必须要写
mapView.onCreate(savedInstanceState);
// 开启定位权限,并开始定位
if (EasyPermissions.hasPermissions(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {//检查是否获取该权限
init();
} else {
//第二个参数是被拒绝后再次申请该权限的解释
//第三个参数是请求码
//第四个参数是要申请的权限
EasyPermissions.requestPermissions(this, "定位需要定位权限", 0, Manifest.permission.ACCESS_COARSE_LOCATION);
}
}
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
}
setLocationCallBack();
//设置定位监听
aMap.setLocationSource(this);
//设置缩放级别
aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
// 设置显示定位按钮 并且可以点击
UiSettings settings = aMap.getUiSettings();
// 是否显示定位按钮
settings.setMyLocationButtonEnabled(false);
// 关闭一切手势操作
settings.setAllGesturesEnabled(true);
// 是否显示缩放按钮
settings.setZoomControlsEnabled(false);
MyLocationStyle myLocationStyle = new MyLocationStyle();
myLocationStyle.myLocationIcon(BitmapDescriptorFactory
.fromResource(R.drawable.maplocation));// 设置小蓝点的图标
myLocationStyle.strokeColor(Color.argb(0, 0, 0, 0));// 设置圆形的边框颜色
myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色
myLocationStyle.strokeWidth(0f);// 设置圆形的边框粗细
// myLocationStyle.anchor(int,int)//设置小蓝点的锚点
// getMap().setLatLonQuanVisible(false);
aMap.getUiSettings().setCompassEnabled(false);
aMap.setMyLocationStyle(myLocationStyle);
aMap.getUiSettings().setMyLocationButtonEnabled(false);// 设置默认定位按钮是否显示
// aMap.setMyLocationType()
//显示定位层并可触发,默认false
aMap.setMyLocationEnabled(true);
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
// LatLng latLng = new LatLng(38.906901,116.397972);
// final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("").snippet("DefaultMarker"));
}
private void setLocationCallBack() {
if (Coordinate != null) {
jiweiData = Coordinate.substring(2, Coordinate.length() - 2).split(",");
Log.e("TAG", " qqqqqqqq" + jiweiData);
mlgt = Double.parseDouble(jiweiData[0].substring(1));
mlat = Double.parseDouble(jiweiData[1].substring(0, jiweiData[1].length() - 1));
Log.e("TAG", " wwwww" + mlgt + "rrrrrrr" + mlat);
LatLng latLng1=new LatLng(108.286888,22.8389);
LatLng latLng2=new LatLng(108.284566,22.8354);
LatLng latLng3=new LatLng(108.287462,22.838598);
LatLng latLng4=new LatLng(108.287215,22.83846);
LatLng latLng5=new LatLng(108.286952,22.838504);
/* LatLng latLng1 = new LatLng(Double.parseDouble(jiweiData[0].substring(1)) , Double.parseDouble(jiweiData[1].substring(0, jiweiData[1].length() - 1)));
LatLng latLng2 = new LatLng(Double.parseDouble(jiweiData[2].substring(1)), Double.parseDouble(jiweiData[3].substring(0, jiweiData[3].length() - 1)));
LatLng latLng3 = new LatLng(Double.parseDouble(jiweiData[4].substring(1)) , Double.parseDouble(jiweiData[5].substring(0, jiweiData[5].length() - 1)));
LatLng latLng4 = new LatLng(Double.parseDouble(jiweiData[6].substring(1)) , Double.parseDouble(jiweiData[7].substring(0, jiweiData[7].length() - 1)));
LatLng latLng5 = new LatLng(Double.parseDouble(jiweiData[8].substring(1)), Double.parseDouble(jiweiData[9].substring(0, jiweiData[9].length() - 1)));*/
// LatLng latLng2=new LatLng(Double.parseDouble(jiweiData[2].substring(1)),Double.parseDouble(jiweiData[3].substring(0, jiweiData[1].length() - 1)));
//根据获取的经纬度,将地图移动到定位位置
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(mlat, mlgt)));
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.maplocation));
markerOptions.position(new LatLng(mlat, mlgt));
markerOptions.title("位置");
markerOptions.snippet("纬度:" + mlat + " 经度:" + mlgt);
markerOptions.period(100);
aMap.addMarker(markerOptions);
// List<LatLng> latLngs = new ArrayList<>();
//latLngs.add(1,Double.parseDouble(jiweiData[0].substring(1)));
/// latLngs.add(new LatLng(Double.parseDouble(jiweiData[2].substring(1)),
//Double.parseDouble(jiweiData[3].substring(0, jiweiData[3].length() - 1))));
/* latLngs.add(new LatLng(Double.parseDouble(jiweiData[2].substring(1)),
Double.parseDouble(jiweiData[3].substring(0, jiweiData[3].length() - 1))));
latLngs.add(new LatLng(Double.parseDouble(jiweiData[3].substring(1)),
Double.parseDouble(jiweiData[4].substring(0, jiweiData[4].length() - 1))));
latLngs.add(new LatLng(Double.parseDouble(jiweiData[4].substring(1)),
Double.parseDouble(jiweiData[5].substring(0, jiweiData[5].length() - 1))));*/
Log.e("TAG", "经纬度456 " + latLng1 + "a" + latLng2 + latLng3 + latLng4 + latLng5);
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.add(latLng1, latLng2, latLng3, latLng4, latLng5);
polygonOptions.strokeWidth(15)
.strokeColor(Color.argb(50, 1, 1, 1))
.fillColor(Color.argb(1, 1, 1, 1));
aMap.addPolygon(polygonOptions);
Log.e("TAG", "运行到这里啦: ");
/* mListener.onLocationChanged(aMapLocation);
//添加定位图标
aMap.addMarker(locationUtil.getMarkerOption(str, mlat, mlgt));*/
}
/*locationUtil = new LocationUtil();
locationUtil.setLocationCallBack(new LocationUtil.ILocationCallBack() {
@Override
public void callBack(String str, double lat, double lgt, AMapLocation aMapLocation) {
// if(Coordinate==null){
// //根据获取的经纬度,将地图移动到定位位置
// aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(lat, lgt)));
// mListener.onLocationChanged(aMapLocation);
// //添加定位图标
// aMap.addMarker(locationUtil.getMarkerOption(str, lat, lgt));
// }else
}
});
*/
}
//定位激活回调
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedListener;
locationUtil.startLocate(getApplicationContext());
}
@Override
public void deactivate() {
mListener = null;
}
@Override
protected void onPause() {
super.onPause();
//暂停地图的绘制
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
//销毁地图
mapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//重新绘制加载地图
mapView.onResume();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
// @Override
// public void onPermissionsGranted(int i, List<String> list) {
//
// }
//
// @Override
// public void onPermissionsDenied(int i, List<String> list) {
//
// }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//把申请权限的回调交由EasyPermissions处理
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
//下面两个方法是实现EasyPermissions的EasyPermissions.PermissionCallbacks接口
//分别返回授权成功和失败的权限
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
if (perms.get(0).equals("android.permission.READ_PHONE_STATE")) {
ToastUtils.showShort("READ_PHONE_STATE权限获取成功");
} else if (perms.get(0).equals("android.permission.ACCESS_COARSE_LOCATION")) {
ToastUtils.showShort("定位权限获取成功");
init();
}
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
if (perms.get(0).equals("android.permission.ACCESS_COARSE_LOCATION")) {
ToastUtils.showShort("定位权限获取失败,请在设置中手动开启");
}
}
}
我的log打印出来的数据是
07-16 17:38:51.294 19116-19116/com.chenxi.bimquanziguankong E/TAG: 噢噢噢噢 [[[108.286888,22.8389],[108.287317,22.8389],[108.287462,22.838598],[108.287215,22.83846],[108.286952,22.838504]]]
07-16 17:38:51.426 19116-19116/com.chenxi.bimquanziguankong E/TAG: qqqqqqqq[Ljava.lang.String;@282045c3
07-16 17:38:51.426 19116-19116/com.chenxi.bimquanziguankong E/TAG: wwwww108.286888rrrrrrr22.8389
07-16 17:38:51.439 19116-19116/com.chenxi.bimquanziguankong E/TAG: 经纬度456 lat/lng: (90.0,22.8389)alat/lng: (90.0,22.8389)lat/lng: (90.0,22.838598)lat/lng: (90.0,22.83846)lat/lng: (90.0,22.838504)
07-16 17:38:51.449 19116-19116/com.chenxi.bimquanziguankong E/TAG: 运行到这里啦:
就是它的经度会变成90.0无论我给它的经度是多少都是90.然后区域也画不出来。有大神知道什么原因吗?