如何使用 API 在 google map xamarin iOS 上更新 PIN 中的信息
Posted
技术标签:
【中文标题】如何使用 API 在 google map xamarin iOS 上更新 PIN 中的信息【英文标题】:How to update information in the PIN on google map xamarin iOS using API 【发布时间】:2021-10-28 11:01:55 【问题描述】:我从 API 获取数据,我想使用 xamarin 上的 ios 项目更新谷歌地图上自定义 pin 中的信息。
我这样声明我的 CustomPins:
CustomPin pin1 = new CustomPin
Type = PinType.Place,
Position = new Position(41.59043006333251, 24.766286971618303),
Name = "Xamarin",
Label = "Bjala river - Smoljan",
Address = "гр. Смолян",
CodeNum = 1,
AlertLevel = 2
;
customMap.CustomPins = new List<CustomPin>
pin1,
;
customMap.Pins.Add(pin1);
customMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(41.567797926753485, 25.389703182725665), Distance.FromKilometers(70)));
Task.Run(async () => await APIConnection(customMap.CustomPins));
我的 API 连接方法如下所示:
public async Task APIConnection(List<CustomPin> pins)
WaterBindingData waterData = await _restServiceData.GetWaterDataForecast(GenerateRequestUri(Constants.EndPoint), GenerateRequestUriStations(Constants.EndPoint));
//BindingContext = waterData;
foreach (var water in waterData.WaterStation.Stations)
int codeNum = water.CodeNum;
int level = water.AlertLevelStation;
int mapcode = water.MapCode;
foreach (var item in pins)
if (item.CodeNum == water.CodeNum)
item.AlertLevel = level;
item.CodeNum = codeNum;
item.MapCode = mapcode;
所以在waterData
中来自这个API 的数据我想用water.CodeNum;
、water.AlertLevelStation;
和water.MapCode;
更新引脚中的AlertLevel
、CodeNum
和MapCode
API。
问题: 问题出在:waterData
带有数据,我调试这段代码,他在 if else 语句中输入,而不是 更新 中的信息infoBoxWindow
.. 这个问题怎么解决?
但数据在 waterData.WaterStations.Stations 中
---------更新--------
我试试这个方法:
foreach (var water in waterData.WaterStation.Stations)
int codeNum = water.CodeNum;
int level = water.AlertLevelStation;
int mapcode = water.MapCode;
foreach (var item in pins)
if (item.CodeNum == water.CodeNum)
item.AlertLevel = level;
item.CodeNum = codeNum;
item.MapCode = mapcode;
customMap.Pins.Clear();
foreach(var item in pins)
customMap.Pins.Add(item);
我在 main.cs 文件中收到错误:
Object reference not set to an instance of an object
【问题讨论】:
【参考方案1】:在检索列表时更改属性不会更新地图中的 UI。
尝试清除并读取循环后的项目。
foreach (var water in waterData.WaterStation.Stations)
int codeNum = water.CodeNum;
int level = water.AlertLevelStation;
int mapcode = water.MapCode;
foreach (var item in pins)
if (item.CodeNum == water.CodeNum)
item.AlertLevel = level;
item.CodeNum = codeNum;
item.MapCode = mapcode;
customMap.Pins.Clear();
foreach(var item in pins)
customMap.Pins.Add(item);
【讨论】:
在最后一行 customMap.Pins = pin;我收到错误:无法将属性或索引器 Map.Pins 分配给 -- 它是只读的 我在 main.cs 对象引用中收到另一个错误,未设置为对象实例检查我的更新 你能找出是哪一行导致了错误吗?尝试使用Try catch
。以上是关于如何使用 API 在 google map xamarin iOS 上更新 PIN 中的信息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 在 Google Maps API 中仅获取一个标记
如何在现有较旧的 android 项目中使用最新 API 添加 Google Map?
如何在 iPhone 中使用 Google Maps API?