android百度地图开发

android百度地图开发

使用android开发百度地图需要事先在百度地图开发者平台上注册账号并下载百度地图相关的工具包,之后配置到自己的程序中,具体可参考https://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5,环境配置好后即可开始百度地图的开发.下面介绍一下百度地图简单的使用。

一地图显示

1在布局文件中添加百度地图控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".Activity.ShowLocationNormalActivity"
    android:orientation="vertical">

    <include layout="@layout/title_layout"/>

    <com.baidu.mapapi.map.MapView
        android:id="@+id/baiduMapViewShowLocation"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="6">
    </com.baidu.mapapi.map.MapView>


</LinearLayout>

2.显示地图:

public class ShowLocationNormalActivity extends AppCompatActivity 
{

    private MapView mapViewShowLocation;
    private BaiduMap baiduMap;
      @Override
    protected void onCreate(Bundle savedInstanceState)
     {
        super.onCreate(savedInstanceState);

        //获取百度地图运行所需环境
        SDKInitializer.initialize(getApplicationContext());


        setContentView(R.layout.activity_show_location_normal);


        mapViewShowLocation=findViewById(R.id.baiduMapViewShowLocation);
        baiduMap=mapViewShowLocation.getMap();

        baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
      }
}


注意:SDKInitializer.initialize(getApplicationContext());要在
setContentView(R.layout.activity_show_location_normal);
前调用

二将地图缩放到某个位置

            double xCoordinate= -2850406.0172;
            double yCoordinate= 4651849.7088;
            double zCoordinate= 3292951.6637;

            //将空间直角坐标转换为大地测量坐标
            Ecef2LlaConverter.GeodeticLlaValues geodeticLlaValues=
                    Ecef2LlaConverter.convertECEFToLLAByIterations(xCoordinate,yCoordinate,zCoordinate);

            //将弧度制角度转换为角度制角度
            double latitudeDegree=geodeticLlaValues.latitudeRadians/Math.PI*180.0;
            double longitudeDegree=geodeticLlaValues.longitudeRadians/Math.PI*180.0;

            //将WGS84坐标转换为BD09
            LatLng latLngWGS84=new LatLng(latitudeDegree,longitudeDegree);
            CoordinateConverter coordinateConverter=new CoordinateConverter().from(CoordinateConverter.CoordType.GPS).coord(latLngWGS84);
            LatLng latLngBD09=coordinateConverter.convert();
            MapStatusUpdate mapStatusUpdate;
            mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latLngBD09);

            //将地图显示为第一个计算出的位置处
            baiduMap.setMyLocationEnabled(true);
            baiduMap.animateMapStatus(mapStatusUpdate);

            //缩放地图大小
            mapStatusUpdate=MapStatusUpdateFactory.zoomTo(18f);
            baiduMap.animateMapStatus(mapStatusUpdate);

注意LatLng使用角度制,百度地图使用的坐标系为BD09,直接由GNSS算得到的坐标若为WGS84则需进行坐标转换.

baiduMap.setMyLocationEnabled(true);至关重要,否则后续对地图操作将会无效。

三显示标记点

 BitmapDescriptor bitmapDescriptor= BitmapDescriptorFactory.fromResource(R.drawable.ic_action_location_on);
 OverlayOptions overlayOptions=new MarkerOptions().icon(bitmapDescriptor).position(latLngBD09);
 baiduMap.addOverlay(overlayOptions);

R.drawable.ic_action_location_on为自己下载的icon资源,通过调整改变量以实现不同样式的标记点,
推荐一个不错的icon下载连接:
https://romannurik.github.io/AndroidAssetStudio/icons-actionbar.html#source.type=clipart&source.clipart=drive_file_rename_outline&source.space.trim=0&source.space.pad=0&name=ic_action_drive_file_rename_outline&theme=custom&color=rgba(33%2C%20150%2C%20243%2C%200.6)

四显示轨迹

List<LatLng> points=new ArrayList<LatLng>();
//
//这里未对points赋值,读者可根据自己需要将轨迹上的点依次add进points
//
OverlayOptions polyLineOverLay=new PolylineOptions().width(5).color(0xAAB23AEE).points(points);
baiduMap.addOverlay(polyLineOverLay);

color(0xAAB23AEE)表示轨迹颜色
0xAAB23AEE表示16进制的ARGB颜色
0x表示16进制标识
AA表示透明度
B23AEE对应的RGB值

清空原有的标记点和轨迹

baiduMap.clear();

像标记点,轨迹等在百度地图上统一称为覆盖物,更多的百度地图使用参考百度地图官方开发者平台。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值