Android 百度地图,已知中心点的经纬度,我怎么在地图上的中心点右边绘制一条指定距离(单位米)的直线呢?
假设比例尺缩放级别是12,中点点就是当前位置,怎么去转换这个单位?
百度地图上的api都是通过经纬度去操作的,但是我除了知道中心点,就只知道3000米了。
Android 百度地图,已知中心点的经纬度,我怎么在地图上的中心点右边绘制一条指定距离(单位米)的直线呢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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>
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 远程安装一下vasp
- ¥15 自己做的代码上传图片时,报错
- ¥15 Lingo线性规划模型怎么搭建
- ¥15 关于#python#的问题,请各位专家解答!区间型正向化
- ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
- ¥50 comsol温度场仿真无法模拟微米级激光光斑
- ¥15 上传图片时提交的存储类型
- ¥15 VB.NET如何绘制倾斜的椭圆
- ¥15 arbotix没有/cmd_vel话题
- ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据