qq_43544413 2019-07-16 17:54 采纳率: 0%
浏览 526

关于高德地图绘制区域面的问题?有大神解答一下吗?

我的代码是这样的

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.然后区域也画不出来。有大神知道什么原因吗?

  • 写回答

1条回答 默认 最新

  • @Foritee 2019-07-17 07:31
    关注

    没看明白呀你是要绘制marker吗还是圆形区域。关于高德地图绘制marmer和移动地图,可以参考下我之前写的
    https://blog.csdn.net/sxt_zls/article/details/84330975

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料