如何使用Xamarin Forms Essentials与Xamarin Forms Maps搜索周边餐馆等通用地点
Xamarin 周边场所搜索实现方案
首先明确:Xamarin Essentials 和 Xamarin Maps 本身没有内置的兴趣点(POI)搜索能力,你可以按照以下步骤实现需求:
前置准备
你已经完成的地理编码、用户位置获取能力可以直接复用,首先确认你已经拿到用户当前的经纬度坐标,示例获取代码:
var currentLoc = await Geolocation.GetLastKnownLocationAsync();
记得提前在AndroidManifest.xml和Info.plist中配置好定位权限,避免权限问题导致功能异常。
核心POI搜索实现
你只需要对接你当前使用的地图服务商的POI检索接口即可,主流地图服务都有对应Xamarin端的适配方案:
- 如果你用的是Google Maps相关服务,直接调用内置的周边搜索接口,传入用户经纬度、搜索半径、需要查询的场所类型(比如餐馆对应
restaurant、酒吧对应bar、医院对应hospital),即可拿到返回的场所列表,包含名称、地址、坐标、营业时间等常用字段。 - 如果你用的是国内地图服务(高德、百度等),对应绑定SDK中都有
POISearch相关工具类,设置搜索模式为周边搜索,传入类型参数或者关键词即可获取结果。
结果展示到地图
拿到搜索到的场所数据后,你可以直接添加标记到Xamarin Maps上展示,示例代码:
var placePin = new Pin { Label = 场所名称字段, Address = 场所地址字段, Type = PinType.Place, Position = new Position(场所纬度, 场所经度) }; // 添加标记到地图 myMap.Pins.Add(placePin);
你也可以给Pin添加点击事件,点击后弹出详情页展示更多场所信息。
学生项目调试建议
- 前期调试可以先写死测试经纬度,避免定位信号、权限问题拖慢开发进度
- 主流地图服务商的个人开发者免费配额完全可以覆盖学生项目的调用量,不需要额外付费
内容的提问来源于stack exchange,提问作者Richard Koontz
相关产品推荐
相关产品推荐

