调用百度地图api实现标记城市

本文详细记录了使用百度地图SDK实现地图标记城市功能的过程,包括下载SDK、工程配置、申请秘钥、地址解析及标注地图等关键步骤。通过实例代码展示了如何根据城市名称获取经纬度,并将其标记于地图上。

正在做的项目用到了地图标记城市的功能,用了百度地图的sdk来实现,写篇博客把实现过程记录下。

下载sdk,工程配置,申请秘钥等基础步骤,开发人员可根据百度提供的开发指南一步一步操作,见此链接:

点击链接

需要注意的是申请秘钥时要用到fingerprint和包名,这个fingerprint与keystore有关,多人并行开发要注意保持keystore的一致,如果是对已发布app的更新,那么要与之前已发布

版本使用同一个keystore来申请秘钥。

根据百度提供的文档,开发人员按照左侧“简介”,“申请秘钥”,“Hello BaiduMap”,的步骤操作下来,就会看到了地图显示;

接下来在“基础地图”里面注意到“标注覆盖物”部分可以实现标注功能:

    //定义Maker坐标点  
    LatLng point = new LatLng(39.963175, 116.400244);  
    //构建Marker图标  
    BitmapDescriptor bitmap = BitmapDescriptorFactory  
        .fromResource(R.drawable.icon_marka);  
    //构建MarkerOption,用于在地图上添加Marker  
    OverlayOptions option = new MarkerOptions()  
        .position(point)  
        .icon(bitmap);  
    //在地图上添加Marker,并显示  
    mBaiduMap.addOverlay(option);
代码中可见标注覆盖物需要的输入信息为经纬度的值,并且需要一个本地的icon_marka资源图片。

那么下面来看如何根据城市名称的字符串来获取经纬度,也就是地址解析:

		// 标记北京
		final String city = "北京";
		// 地理编码请求参数
		GeoCodeOption geooption = new GeoCodeOption();
		// 设置城市
		geooption.city(city);
		// 设置地址
		geooption.address(city);
		// 新建地理编码查询
		GeoCoder coder = GeoCoder.newInstance();
		// 设置查询结果监听
		coder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {

			@Override
			public void onGetGeoCodeResult(GeoCodeResult result) {
				// 地理编码查询结果回调函数
				if (result != null && result.getLocation() != null) {
					Log.i("tag",
							"---onGetGeoCodeResult---"
									+ result.getLocation().latitude + ", "
									+ result.getLocation().longitude);
					lat = result.getLocation().latitude;
					lon = result.getLocation().longitude;
					LatLng point = new LatLng(lat, lon);
					// 构建MarkerOption,用于在地图上添加Marker
					OverlayOptions option = new MarkerOptions().position(point)
							.icon(bd).title(city);
					// 在地图上添加Marker,并显示
					mBaiduMap.addOverlay(option);
				}
			}

			@Override
			public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
			}
		});
		// 发起地理编码(地址信息->经纬度)请求
		coder.geocode(geooption);
新建一个地理编码请求参数geooption,设置城市与地址,这里都设置为“北京”,新建地理编码查询对象coder,设置查询结果监听,最后调用geocode()方法来发起地理编码请求,请求成功,在监听中返回包含经纬度信息的GeoCodeResult对象,调用上面所介绍的标注方法将此经纬度的标记点标注到地图上,至此实现了完整的功能需求。

*************

具体实现见示例代码,示例代码中标记了三个城市,并且加入了对标记点的点击事件的处理,下载地址如下:

点击进入下载页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值