WPF C#使用EF查询的经纬度为Bing Maps设置Pushpin位置异常求助
问题根源
你在给Location属性赋值时的错误来自于:Bing Maps WPF控件的Location类构造函数不支持直接传入你EF查询返回的匿名类型对象,它的标准构造函数需要依次传入两个double类型参数:第一个是纬度值,第二个是经度值。
修正后的代码
private void LoadPins() { var result = (from s in PE.tbl_SafeSpace select new { s.lat, s.@long }).ToList(); foreach (var item in result) { Pushpin pin = new Pushpin(); // 分别取出经纬度传入Location构造函数 pin.Location = new Location(item.lat, item.@long); // 可选:给Pushpin加提示信息方便识别 pin.ToolTip = $"纬度:{item.lat}\n经度:{item.@long}"; // 添加到地图 bMaps.Children.Add(pin); } }
额外注意事项
- 请提前确认数据库中
lat和long字段为数值类型,没有非数值、空值等异常数据,避免运行时类型转换报错 - Bing Maps的
Location构造函数参数顺序为先纬度、后经度,如果最终Pushpin位置和预期不符,可以检查两个参数的传参顺序是否正确 - 上述代码把原来的for循环改成了更简洁的foreach遍历,如果你需要保留索引计数可以改回原来的for写法,只要经纬度传参逻辑正确即可
内容的提问来源于stack exchange,提问作者Smmit
相关产品推荐
相关产品推荐

