百度、高德地图功能进一步探索之—锚点绘制/轨迹绘制(二)

接着上一篇文章继续分享一些地图功能:锚点绘制、轨迹绘制。

这里就对地图的基础功能和定位功能不进行详细讲解了

锚点绘制

高德地图实现:

通过aMap.addMarker(markerOptions);可以添加Marker锚点,markerOptions为com.amap.api.maps2d.model.MarkerOptions对象

markerOptions对象的相关方法:

  • position(LatLng position) //设置锚点位置
  • icon(BitmapDescriptor icon) //锚点自定义图标 
  • icons(java.util.ArrayList icons)//设置多张可以显示出gif的感觉
  • isVisible()  //设置是否显示锚点
  • snippet(java.lang.String snippet)//设置锚点的描述(点击锚点后弹出的描述框中的内容)
  • title(java.lang.String title) //设置锚点的标题(点击锚点后弹出的描述框中的标题)

当然还有更多的方法,可以自行查看api

当然如果要对锚点进行响应的操作需要给地图操作对象及Amp设置监听setOnMarkerDragListener(AMap.OnMarkerDragListener listener) 

 

百度地图实现:

百度地图添加覆盖物,没有高德地图那些方法,仅通过addOverlay(OverlayOptions options)和addOverlays(java.util.List options)根据添加时传入的参数不同实现不同的覆盖层

我们当前要使用的锚点覆盖层实现对象为:

百度、高德地图功能进一步探索之—锚点绘制/轨迹绘制(二)_第1张图片 marker覆盖物的实体标识类

MarkerOptions对象的使用:

  • position(LatLng position) //添加锚点的位置信息
  • icon(BitmapDescriptor icon) //设置锚点的自定义图标
  • extraInfo(Bundle extraInfo) //添加附加信息
  • 还有更多的使用方法需要在查看Api

百度地图的锚点实现和高德不同,高德会自动弹出,百度地图的弹窗需要 自己去实现,使用baiduMap的setOnMarkerClickListener(BaiduMap.OnMarkerClickListener listener) 监听可以自行实现弹窗效果:baiduMap.showInfoWindow(infowindow);方法可以把消息页显示出来,具体实现看com.baidu.mapapi.map.InfoWindow如何实现

一个锚点弹窗的实现如下仅限参考
 baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {

            @Override
            public boolean onMarkerClick(Marker marker) {

                Info info=(Info) marker.getExtraInfo().getSerializable("info");

                //信息窗口
                InfoWindow infowindow=null;

                //设置信息窗口设置的文字
                TextView view=new TextView(getApplicationContext());
                view.setBackgroundResource(R.drawable.location_tips);
                view.setPadding(30,20, 30,50);
                view.setText(info.getName());

                //从marker中获取经纬度的信息来转化成屏幕的坐标
                LatLng ll=marker.getPosition();
                Point p=baiduMap.getProjection().toScreenLocation(ll);
                p.y-=47;
                LatLng llinfo=baiduMap.getProjection().fromScreenLocation(p);

                //生成信息窗口
                infowindow=new InfoWindow(view, llinfo, new OnInfoWindowClickListener() {

                    @Override
                    public void onInfoWindowClick() {
                        //弹窗点击具体实现
                        //隐藏消息窗口
                        baiduMap.hideInfoWindow();
                    }
                });

                //将信息窗口显示出来
                baiduMap.showInfoWindow(infowindow);

                ///将布局显示出来用来显示具体的内容
                layout.setVisibility(View.VISIBLE);
                //将信息设置进布局文件
                popupInfo(layout,info);
                return true;
            }
        });

轨迹绘制

高德地图实现:

高德地图添加运动轨迹的实现代码如下:

   // 添加运功轨迹 并获取添加物对象
polyline = aMap.addPolyline(PolylineOptions()
        //添加位置信息集合
        .addAll(lats)
        //设置线条的宽度 单位为像素
        .width(10f)
        //是否话虚线 
        .setDottedLine(false)
        //线条颜色颜色
        .color(Color.argb(255, 255, 20, 147)));
  • lats为经纬度LatLng对象的List集合这可以通过addAll(java.lang.Iterable points) 也可以通过add(LatLng point)追加单独的位置信息
  • 他返回的polyline 为多段线对象,polyline 该对象可以操作该多段线物的,显示追加点位,显示轨迹,隐藏轨迹,移除轨迹

高德地图简单的轨迹实现到这里就算完成了

 

百度地图实现:

百度地图添加运动轨迹的实现代码如下:其实添加和添加锚点一样只是具体的实现类不一样使用的是PolylineOptions对象

 mPolylineOptions
//设置轨迹的点位集合
.points(lats)
//是否虚线
.dottedLine(false)
//轨迹线的颜色
.color(Color.argb(255, 255, 20, 147))
//轨迹线的宽度
.width(5)

/**
 * 绘制运动轨迹
 */
 bdPolyline = mBaiduMap.addOverlay(mPolylineOptions);
  • 以上代码基本的使用吼了,如果想要使用更多的实现卡伊看Api
  • bdPolyline 对象为多段线对象,Polyline该对象可以操作该多段线物的,显示追加点位,显示轨迹,隐藏轨迹,移除轨迹,具体的Polyline对象实现查看Api (com.baidu.mapapi.map.Polyline)
  • 百度地图的轨迹实现到现在基本也完成了

 

GitHub项目地址

 

如果您什么问题欢迎交流

 

你可能感兴趣的:(地图,轨迹追踪,Android)