Android百度地图开发学习笔记(三)之添加Marker和两点测距

 因为项目的需求,我们希望在百度地图上自定义图标将自己的项目信息显示出来,这里就用到了为地图添加覆盖物。

  地图 SDK 提供的点标记功能包含两大部分,一部分是点(俗称 Marker)、另一部分是浮于点上方的信息窗体(俗称 InfoWindow)。同时,SDK 对 Marker 和 InfoWindow 封装了大量的触发事件,例如点击事件、长按事件、拖拽事件。

一 .添加Maker

1.获取坐标

 根据项目需求,我的项目是安卓从Tomcat服务器获取得到的地理坐标,这里我直接在安卓中预先写好。
    private void getPoints() {
        //获取坐标点
        latLngsList = new ArrayList<LatLng>();

        //模拟解析得到的坐标点
        final LatLng point = new LatLng(31.1592280000,120.6960400000);
        final LatLng point2 = new LatLng(31.1583940000,120.6916560000);
        final LatLng point3 = new LatLng(31.1588570000,120.6943150000);

        latLngsList.add(point);
        latLngsList.add(point2);
        latLngsList.add(point3);
   }

2.根据坐标点绘制Marker

 private void showLineMarker() {
        //构建marker图标
        BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.p1004);//设置图标

        for (int i = 0; i < latLngsList.size(); i++) {
            //构建MarkerOption,用于在地图上添加Marker
            option = new MarkerOptions().icon(bitmap).position(latLngsList.get(i));
            //生长动画
            option.animateType(MarkerOptions.MarkerAnimateType.grow);
            //在地图上添加Marker,并显示
            mBaiduMap.addOverlay(option);
            //设置Marker覆盖物的ZIndex
            option.zIndex(i);
        }
    }

3. 设置Marker点击事件和点击地图事件

 private void setMarkerClick() {
        mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
            	
                final LatLng ll = marker.getPosition();   //获取经纬度  
                lat_hui = ll.latitude;  
                lon_hui = ll.longitude;             
               
                return true;
            }
        });
    }
private void initMapClickEvent()//点击地图,使窗口消失
	{
		mBaiduMap.setOnMapClickListener(new OnMapClickListener()
		{

			@Override
			public boolean onMapPoiClick(MapPoi arg0)
			{
				return false;
			}

			@Override
			public void onMapClick(LatLng arg0)
			{
												                               
			 //添加点击地图后响应的事件
			}
		});
	}

4.两点测距

	public Double Distance(double lat1, double lng1,double lat2, double lng2) {  
	       
	       
	     Double R=6370996.81;  //地球的半径  
	       
	    /* 
	     * 获取两点间x,y轴之间的距离 
	     */  
	    Double x = (lng2 - lng1)*Math.PI*R*Math.cos(((lat1+lat2)/2)*Math.PI/180)/180;  
	    Double y = (lat2 - lat1)*Math.PI*R/180;  
	  
	  
	     Double distance = Math.hypot(x, y);   //得到两点之间的直线距离  
	           
	     return   distance;  
	           
	     }  
 将这些相关函数添加到你工程中调用就可以了。






 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值