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

如何在C# Xamarin Forms Maps中动态加载坐标生成Polygon地理围栏

问题修复方案

错误原因

C# 对象初始化器中的集合初始化语法仅支持直接填写元素值,不支持嵌入 foreach 等执行语句,这是你代码报错的核心原因。

可用实现方案

你可以选择以下任意一种方式实现动态点位加载:

方案1:使用LINQ批量转换(写法最简洁)

需要先引入LINQ命名空间:
using System.Linq;
实现代码:

// 先将字符串坐标批量转为Position集合
var positionList = coordinates.Select(coordinate =>
{
    var latLonArr = coordinate.Split(',');
    return new Position(Convert.ToDouble(latLonArr[0]), Convert.ToDouble(latLonArr[1]));
}).ToList();

// 初始化地理围栏Polygon
Polygon geofence = new Polygon
{
    StrokeColor = Color.Green,
    FillColor = Color.Green,
    Geopath = positionList
};

方案2:先实例化对象再循环添加点位

如果你不习惯用LINQ,可以用基础循环实现:

// 先初始化Polygon基础属性
Polygon geofence = new Polygon
{
    StrokeColor = Color.Green,
    FillColor = Color.Green
};

// 循环遍历坐标数组,逐个添加到Geopath中
foreach (string coordinate in coordinates)
{
    string[] latLonArr = coordinate.Split(',');
    geofence.Geopath.Add(new Position(
        Convert.ToDouble(latLonArr[0]),
        Convert.ToDouble(latLonArr[1])
    ));
}

注意:如果你的坐标字符串可能存在格式异常(比如分隔符错误、非数字内容),建议添加对应的格式校验逻辑,避免转换坐标时抛出运行时异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:36:03