Android 百度地图,已知中心点的经纬度,我怎么在地图上的中心点右边绘制一条指定距离(单位米)的直线呢?
假设比例尺缩放级别是12,中点点就是当前位置,怎么去转换这个单位?
百度地图上的api都是通过经纬度去操作的,但是我除了知道中心点,就只知道3000米了。
坐标数值的变换就可以完成距离的加减。往右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>
个人觉得直接加经度不够准确,可以参考一下这个
https://zhidao.baidu.com/question/1116150086531041979.html
因为不同纬度时候每偏移一经度,地表距离都是不同的。
https://www.win789.com/beikao/dili/MjYzMTk4.html?btwaf=21450244