You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI地图:如何通过Location获取商家名称及业态类型?

问题描述

我尝试通过反向地理编码/Placemark获取商家名称或至少业态类型,但部分字段返回数字(例如FeatureName为230),不知如何解析。若当前方式不正确,请问该如何获取所需信息?

代码示例

private async Task<string> GetGeocodeReverseData(double latitude = 43.01297, double longitude = -88.38205)
{
    IEnumerable<Placemark> placemarks = await Geocoding.Default.GetPlacemarksAsync(latitude, longitude);
    Placemark placemark = placemarks?.FirstOrDefault();

    if (placemark != null)
    {
        return
            $"AdminArea:       {placemark.AdminArea}\n" +
            $"CountryCode:     {placemark.CountryCode}\n" +
            $"CountryName:     {placemark.CountryName}\n" +
            $"FeatureName:     {placemark.FeatureName}\n" +
            $"Locality:        {placemark.Locality}\n" +
            $"PostalCode:      {placemark.PostalCode}\n" +
            $"SubAdminArea:    {placemark.SubAdminArea}\n" +
            $"SubLocality:     {placemark.SubLocality}\n" +
            $"SubThoroughfare: {placemark.SubThoroughfare}\n" +
            $"Thoroughfare:    {placemark.Thoroughfare}\n";
    }

    return "";
}

当前输出(目标位置为加油站)

AdminArea: "Wisconsin"
CountryCode: "US"
CountryName: "United States"
FeatureName: "230"
Locality: "Wales"
Location: {Microsoft.Maui.Devices.Sensors.Location}
PostalCode: "53183"
SubAdminArea: "Waukesha County"
SubLocality: (null)
SubThoroughfare: "230"
Thoroughfare: "West Summit Avenue"
解决方案

1. 字段返回数字的原因

你看到的FeatureName和SubThoroughfare返回的"230"是地址的门牌号,这是Placemark类的设计逻辑——它仅负责返回标准化地址结构信息,不包含商家名称、业态这类POI(兴趣点)数据。

2. 获取商家名称/业态类型的正确方式

Maui自带的Geocoding API不支持POI查询,你需要改用第三方地图服务商的反向地理编码接口,这类接口会返回包含商家、业态的POI数据。

通用实现思路:

  • 注册对应地图服务商的开发者账号,获取API密钥
  • 构造HTTP请求,传入目标经纬度调用其反向地理编码接口
  • 解析返回的JSON数据,提取商家名称、业态类型字段

示例代码(C#):

using System.Net.Http;
using System.Text.Json;

private async Task<string> GetPOIInfo(double latitude, double longitude)
{
    string apiKey = "你的API密钥";
    string requestUrl = $"https://[服务商API地址]/regeocode?lat={latitude}&lng={longitude}&key={apiKey}";
    
    using HttpClient client = new HttpClient();
    string responseContent = await client.GetStringAsync(requestUrl);
    
    // 解析逻辑需根据服务商返回的JSON结构调整
    JsonDocument doc = JsonDocument.Parse(responseContent);
    var poiElements = doc.RootElement.GetProperty("pois").EnumerateArray();
    
    if (poiElements.Any())
    {
        var targetPOI = poiElements.First();
        string shopName = targetPOI.GetProperty("name").GetString();
        string businessType = targetPOI.GetProperty("type").GetString();
        return $"商家名称:{shopName}\n业态类型:{businessType}";
    }
    
    return "未查询到相关POI信息";
}

3. 注意事项

  • 不同服务商的API字段命名、返回格式存在差异,需严格参考对应官方文档
  • 多数服务商的API有调用次数配额限制,需留意使用规则
  • 注意保护API密钥,避免在客户端代码中明文暴露

内容的提问来源于stack exchange,提问作者May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:47:29