百度地图API使用记录



背景:最近需要开发一个使用到地图的网站,对百度地图API做了些研究,记录如下

使用方法:

1.引入百度脚本

<span style="font-size:18px;"><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=ZEiWGifCiQaX0Yj0sxbYmziG"></script></span>

2.初始化地图

var  map = new BMap.Map("allmap", { minZoom: 14, maxZoom: 18 });
           map.addControl(new BMap.MapTypeControl());   //添加地图类型控件
           map.setCurrentCity("厦门");          // 设置地图显示的城市 此项是必须设置的
           map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
           var point = new BMap.Point(118.15, 24.48);
           map.centerAndZoom(point, 16);
</pre><pre name="code" class="javascript"><span style="background-color: rgb(240, 240, 240);">3.在地图上添加自定义的Marker,并为marker添加一些事件</span>
<span style="background-color: rgb(240, 240, 240);">
</span>
var myIcon = new BMap.Icon(lcImgUrl, new BMap.Size(22, 40));
            myIcon.setImageSize(new BMap.Size(22, 40));
            
            //var markers = [];
            for (var i = 0; i < crossCollection.length; i++)
            {
                var temp = crossCollection[i];
                //创建路口信号灯标志
                var pt = new BMap.Point(temp.lon, temp.lat);                
                var crossImgM = new BMap.Marker(pt, { icon: myIcon });  // 创建标注
                crossImgM.setTitle(temp.crossName);
                //crossImgM.setRotation(20);
                map.addOverlay(crossImgM);
                //markers.push(crossImgM);
                //闭包
                (function(){
                    crossImgM.addEventListener("click", setContentForPopup);  
                    crossImgM.addEventListener("infowindowopen",openPopup);
                    crossImgM.addEventListener("infowindowclose",closePopup);
                })();               
            }
<span style="font-size: 18px;">4.动态的改变marker图标</span>
<span style="font-size: 18px;"></span><pre name="code" class="javascript"> var myIcon = new BMap.Icon(lcImgUrl, new BMap.Size(22, 40));
 myIcon.setImageSize(new BMap.Size(22, 40));
 maker.setIcon(myIcon); 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用百度地图API实现GPS步行轨迹,首先需要在Android项目中引入百度地图SDK。然后,可以按照以下步骤实现: 1. 在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` 2. 在build.gradle文件中添加以下依赖: ```groovy implementation 'com.baidu.lbs:trace:6.2.0' ``` 3. 在布局文件中添加MapView: ```xml <com.baidu.mapapi.map.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 4. 在Activity中初始化MapView: ```java public class MainActivity extends AppCompatActivity { private MapView mMapView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.map_view); // 初始化地图 BaiduMap baiduMap = mMapView.getMap(); // 开启定位图层 baiduMap.setMyLocationEnabled(true); } } ``` 5. 实现LocationListener接口,获取GPS位置信息: ```java public class MainActivity extends AppCompatActivity implements LocationListener { private MapView mMapView; private BaiduMap mBaiduMap; private LocationClient mLocationClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.map_view); // 初始化地图 mBaiduMap = mMapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 初始化定位客户端 mLocationClient = new LocationClient(this); // 注册定位监听器 mLocationClient.registerLocationListener(this); // 配置定位参数 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); option.setCoorType("bd09ll"); option.setScanSpan(1000); // 每隔1秒定位一次 mLocationClient.setLocOption(option); // 开始定位 mLocationClient.start(); } @Override public void onLocationChanged(BDLocation location) { if (location == null) return; // 获取经纬度 double latitude = location.getLatitude(); double longitude = location.getLongitude(); // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) .direction(location.getDirection()) .latitude(latitude) .longitude(longitude) .build(); // 设置定位数据 mBaiduMap.setMyLocationData(locData); // 更新地图状态 MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(new LatLng(latitude, longitude)); mBaiduMap.animateMapStatus(update); } } ``` 6. 使用百度地图的Trace功能记录步行轨迹: ```java public class MainActivity extends AppCompatActivity implements LocationListener { private MapView mMapView; private BaiduMap mBaiduMap; private LocationClient mLocationClient; private Trace mTrace; private long mServiceId; private String mEntityName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.map_view); // 初始化地图 mBaiduMap = mMapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 初始化定位客户端 mLocationClient = new LocationClient(this); // 注册定位监听器 mLocationClient.registerLocationListener(this); // 配置定位参数 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); option.setCoorType("bd09ll"); option.setScanSpan(1000); // 每隔1秒定位一次 mLocationClient.setLocOption(option); // 开始定位 mLocationClient.start(); // 初始化Trace mTrace = new Trace(getApplicationContext(), 123456, "mytrace", true); // 开启服务 mServiceId = mTrace.getServiceId(); // 设置实体名称 mEntityName = "myentity"; } @Override public void onLocationChanged(BDLocation location) { if (location == null) return; // 获取经纬度 double latitude = location.getLatitude(); double longitude = location.getLongitude(); // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) .direction(location.getDirection()) .latitude(latitude) .longitude(longitude) .build(); // 设置定位数据 mBaiduMap.setMyLocationData(locData); // 更新地图状态 MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(new LatLng(latitude, longitude)); mBaiduMap.animateMapStatus(update); // 添加轨迹点 LatLng point = new LatLng(latitude, longitude); TraceLocation traceLocation = new TraceLocation.Builder() .setLatitude(latitude) .setLongitude(longitude) .setSpeed(location.getSpeed()) .setBearing(location.getDirection()) .setTime(System.currentTimeMillis() / 1000) .build(); List<TraceLocation> locations = new ArrayList<>(); locations.add(traceLocation); mTrace.track(locations, mServiceId, mEntityName, new OnTrackListener() { @Override public void onRequestFailedCallback(String s) { Log.e("MainActivity", "轨迹上传失败:" + s); } @Override public void onTraceProcessingCallback(int i, String s) { Log.i("MainActivity", "轨迹上传中:" + s); } @Override public void onTraceCallback(byte[] bytes, String s) { Log.i("MainActivity", "轨迹上传成功:" + s); } }); } } ``` 以上就是使用百度地图API实现GPS步行轨迹的步骤。需要注意的是,为了保证定位精度和轨迹记录效果,可以根据具体需求调整定位参数和轨迹记录频率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShuSheng007

亲爱的猿猿,难道你又要白嫖?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值