猿规 2022-07-10 17:44 采纳率: 66.7%
浏览 68
已结题

Android 百度地图,已知中心点的经纬度,我怎么在地图上的中心点右边绘制一条指定距离(单位米)的直线呢

Android 百度地图,已知中心点的经纬度,我怎么在地图上的中心点右边绘制一条指定距离(单位米)的直线呢?
假设比例尺缩放级别是12,中点点就是当前位置,怎么去转换这个单位?
百度地图上的api都是通过经纬度去操作的,但是我除了知道中心点,就只知道3000米了。

  • 写回答

2条回答 默认 最新

  • 铁拳小金刚 2022-07-10 23:32
    关注

    坐标数值的变换就可以完成距离的加减。往右3000米就在原坐标基础上进行改变就可以了,
    具体代码:

    package com.example.baidumap;
    import android.app.Activity;
    import android.os.Bundle;
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.MapStatus;
    import com.baidu.mapapi.map.MapStatusUpdateFactory;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.map.Overlay;
    import com.baidu.mapapi.map.OverlayOptions;
    import com.baidu.mapapi.map.PolylineOptions;
    import com.baidu.mapapi.model.LatLng;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends Activity {
        private MapView mMapView = null;
        BaiduMap mBaiduMap;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            LatLng GEO_SHANGHAI = new LatLng(31.2270000, 121.4810000);
            //获取地图控件引用
            mMapView = (MapView) findViewById(R.id.bmapView);
            MapStatus.Builder builder = new MapStatus.Builder();
            builder.zoom(12.0f);
            builder.target(GEO_SHANGHAI);
            mBaiduMap=mMapView.getMap();
            mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            LatLng p1 = new LatLng(31.2270000, 121.481000);//已知的中心点坐标
            LatLng p2 = new LatLng(31.2270000, 121.511000);//向东3000米坐标,就是坐标121.481000+0.03就可以了
            List<LatLng> points = new ArrayList<LatLng>();
            points.add(p1);
            points.add(p2);
    
    
    //设置折线的属性
            OverlayOptions mOverlayOptions = new PolylineOptions()
                    .width(10)
                    .color(0xAAFF0000)
                    .points(points);
    //在地图上绘制折线
    //mPloyline 折线对象
            Overlay mPolyline = mBaiduMap.addOverlay(mOverlayOptions);
        }
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
            mMapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
            mMapView.onPause();
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
            mMapView.onDestroy();
        }
    }
    
    

    DemoApplication

    package com.example.baidumap;
    
    import android.app.Application;
    
    import com.baidu.mapapi.CoordType;
    import com.baidu.mapapi.SDKInitializer;
    
    public class DemoApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            //在使用SDK各组件之前初始化context信息,传入ApplicationContext
    
            SDKInitializer.setAgreePrivacy(this, true);
            SDKInitializer.initialize(this);
            //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
            //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
            SDKInitializer.setCoordType(CoordType.BD09LL);
        }
    }
    
    
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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/bmapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 已采纳回答 7月11日
  • 创建了问题 7月10日

悬赏问题

  • ¥15 hfss 组天线阵列报错:The A and B vectors must be parallel to the XY plane,如何解决?
  • ¥30 ansible连接设备报错
  • ¥60 pmsampsize包取值问题
  • ¥15 波形合成电路的设计学习
  • ¥15 unity脚本挂不上
  • ¥15 数学建模数学建模需要
  • ¥20 Java Sound Api 调用Mixer.getLine偶现Line unsupported错误。
  • ¥15 使用cuda加速opencv运算但是报错AttributeError: module 'cv2.cuda' has no attribute 'getCudaEnabledDeviceCount'
  • ¥15 java输入输出异常
  • ¥15 三子连珠对弈小游戏制作