#google-maps #flutter #dart #google-maps-api-3 #google-maps-markers
#google-карты #flutter #dart #google-карты-api-3 #google-карты-маркеры #google-maps-api-3
Вопрос:
Приложение: статический API карт Google
Чтобы добавить несколько маркеров, в документах говорится, что нам просто нужно установить несколько значений markers
строки запроса
Несколько маркеров могут быть помещены в один и тот же параметр markers, если они имеют одинаковый стиль; вы можете добавить дополнительные маркеры разных стилей, добавив дополнительные параметры markers.
Я попытался использовать Uri lib следующим образом:
final url = new Uri(
scheme: 'https',
host: 'maps.googleapis.com',
path: 'maps/api/staticmap',
queryParameters: {
'markers' : 'color:blue|label:C|1.015,1.054',
'markers' : 'color:red|label:C|1.012,1.057',
},
);
print(url.toString());
Но дарт этого не допустил бы. Есть ли другой метод?
Что происходит, так это то, что он показывает только один маркер. (Первое)
Комментарии:
1. можешь попробовать
:
вместо=
после'markers'
?2. Кстати, для удобства поиска я бы рекомендовал изменить заголовок вашего вопроса, чтобы он был о том, как дублировать ключ в
Uri
запросе, а не о том, как создать дубликат ключа на карте. В противном случае вы попадаете в классическую проблему X-Y, когда вы преждевременно остановились на решении вместо решения своей конечной проблемы.3. @jamesdlin Хорошая идея, я обновил заголовок
Ответ №1:
A Map
не может содержать дубликатов ключей. Тем не менее, Uri
конструктор поддерживает генерацию строк запросов с дубликатами ключей. Из документации для Uri
конструктора:
При
queryParameters
использовании запрос строится на основе предоставленной карты…. Значение на карте должно быть либо строкой, либоIterable
набором строк, где последнее соответствует нескольким значениям для одного и того же ключа.
Итак, вы могли бы сделать:
final url = Uri(
scheme: 'https',
host: 'maps.googleapis.com',
path: 'maps/api/staticmap',
queryParameters: {
'markers': [
'color:blue|label:C|1.015,1.054',
'color:red|label:C|1.012,1.057'
],
},
);
print(url.toString());
который печатает:
https://maps.googleapis.com/maps/api/staticmap?markers=color:blue|label:C|1.015,1.054amp;markers=color:red|label:C|1.012,1.057