У меня есть координаты 1919 года с широтой и долготой в текстовом файле в этом формате:
44.05215, 27.03266,
44.05056, 27.13236,
44.04887, 27.23206,
44.04709, 27.33175,
44.04522, 27.43143,
44.04326, 27.5311,
44.0412, 27.63077,
44.03906, 27.73043,
44.0345, 27.92973,
44.10396, 22.64161,
44.10638, 22.74137,
44.10871, 22.84114,
44.11095, 22.94092,
44.1131, 23.0407,
Есть ли способ заполнить xamarin.forms.maps
этими координатами и, если возможно, как установить координаты в свойстве position
и каждом (индекс + 1) в свойстве label
?
Пока поставил один пин на карту вот так (просто для пробы):
map.MoveToRegion(MapSpan.FromCenterAndRadius(
new Position(42.1499994, 24.749997),
Distance.FromMiles(100)));
Pin pin = new Pin
{
Label = "Santa Cruz",
Address = "The city with a boardwalk",
Type = PinType.Place,
Position = new Position(42.1499994, 24.749997)
};
map.Pins.Add(pin);
Поскольку я не хочу, чтобы данные считывались через текстовый файл на мобильном устройстве, как лучше всего записать статические данные, а затем отправить их в виде координат контактов?
Могу ли я получить пример того, как установить координаты в списке или массиве или что-то еще, и после того, как установить координаты для контактов и установить каждый (индекс + 1) в свойстве метки?
Я хочу быть карточным кодом.
Однако, как указывалось в одном из комментариев, почти всегда есть лучшие варианты, чем жесткое кодирование. Предпочтительной альтернативой будет вызов API для получения позиций, чтобы приложение не нужно было перекомпилировать, когда необходимо обновить позиции. Следующей лучшей альтернативой будет файл или ресурс, который нетехнический член команды может обновить при необходимости.
Однако, если вы абсолютно настроены на жесткое кодирование позиций, я бы сделал это в статическом классе со статическим списком:
public static class HardcodedLocations
{
public static List<Position> Positions = new List<Position>
{
new Position(44.05215, 27.03266),
new Position(44.05056, 27.13236),
new Position(44.04887, 27.23206)
};
}
Затем, когда вам нужно добавить контакты, вы можете использовать цикл For, чтобы сохранить индекс при добавлении контактов:
for (int i = 0; i < HardcodedLocations.Positions.Count; i++)
{
var pin = new Pin
{
Label = $"Santa Cruz - {i+1}",
Address = "The city with a boardwalk",
Type = PinType.Place,
Position = HardcodedLocations.Positions[i]
};
map.Pins.Add(pin);
}
Обратите внимание, что я понятия не имею, как будет выглядеть производительность добавления почти 2000 контактов в цикле.
"Я не хочу, чтобы данные читались через текстовый файл" - почему бы и нет? Хранение его в файле, активе или ресурсе или в виде базы данных было бы гораздо лучшим подходом, чем попытка жестко закодировать его.