Я работаю с API статических изображений TomTom для создания изображений карт для моего приложения Flutter. Я хотел бы отображать маркеры (булавки) в определенных местах на карте. Однако мне не удалось найти подробную документацию или примеры реализации маркеров в статических изображениях.
Как добавить маркеры на карты, созданные с помощью TomTom Static Image API? Существуют ли определенные параметры или форматы, которые необходимо включить в URL-адрес запроса API для достижения этой цели?
Я попробовал использовать API статических изображений TomTom со стандартным форматом URL-адресов для создания изображений карты. Вот URL-адрес, который я использовал: https://api.tomtom.com/map/1/staticimag ... height=300
Я ожидал, что смогу добавить маркеры (булавки) в определенных координатах на карте, добавив соответствующие параметры, но мне не удалось найти никакой документации или четких инструкций по включению маркеров.
Примечание: я просто нужно показать маркер (булавку) на карте. в коде приложения проблем нет.
Это код, который я использовал для отображения изображения карты в моем приложении:
import 'dart:convert';
import 'package:favorite_places/models/place.dart';
import 'package:flutter/material.dart';
import 'package:location/location.dart';
import 'package:http/http.dart' as http;
class LocationInput extends StatefulWidget {
const LocationInput({
super.key,
});
@override
State createState() {
return _LocationInputState();
}
}
class _LocationInputState extends State {
PlaceLocation? _pickedLocation;
var _isGettingLocation = false;
String get locationImage {
if (_pickedLocation == null) {
return '';
}
final lat = _pickedLocation!.latitude;
final lng = _pickedLocation!.longitude;
return 'https://api.tomtom.com/map/1/staticimag ... uage=en-GB';
}
void _getLocation() async {
Location location = new Location();
bool serviceEnabled;
PermissionStatus permissionGranted;
LocationData locationData;
serviceEnabled = await location.serviceEnabled();
if (!serviceEnabled) {
serviceEnabled = await location.requestService();
if (!serviceEnabled) {
return;
}
}
permissionGranted = await location.hasPermission();
if (permissionGranted == PermissionStatus.denied) {
permissionGranted = await location.requestPermission();
if (permissionGranted != PermissionStatus.granted) {
return;
}
}
setState(() {
_isGettingLocation = true;
});
locationData = await location.getLocation();
final lat = locationData.latitude;
final lng = locationData.longitude;
if (lat == null || lng == null) {
return;
}
final url = Uri.parse(
'https://api.tomtom.com/search/2/reverse ... radius=100');
final response = await http.get(url);
final resData = json.decode(response.body);
final address = resData['addresses'][0]['address']['freeformAddress'];
print(lat);
print(lng);
setState(() {
_pickedLocation =
PlaceLocation(latitude: lat, longitude: lng, address: address);
_isGettingLocation = false;
});
}
@override
Widget build(BuildContext context) {
Widget previewContent = Text(
'No location chosen',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.bodyLarge!.copyWith(
color: Theme.of(context).colorScheme.onBackground,
),
);
if (_pickedLocation != null) {
previewContent = Image.network(
locationImage,
fit: BoxFit.cover,
width: double.infinity,
height: double.infinity,
);
}
if (_isGettingLocation) {
previewContent = const CircularProgressIndicator();
}
return Column(
children: [
Container(
height: 170,
width: double.infinity,
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border.all(
width: 1,
color: Theme.of(context).colorScheme.primary.withOpacity(0.2),
),
),
child: previewContent,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
TextButton.icon(
icon: const Icon(Icons.location_on),
label: const Text('Get Current Location'),
onPressed: _getLocation,
),
TextButton.icon(
icon: const Icon(Icons.map),
label: const Text('Select on Map'),
onPressed: () {},
),
],
)
],
);
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... -image-api
Добавление маркеров на карты с помощью API статических изображений TomTom ⇐ Android
Форум для тех, кто программирует под Android
1732464146
Anonymous
Я работаю с API статических изображений TomTom для создания изображений карт для моего приложения Flutter. Я хотел бы отображать маркеры (булавки) в определенных местах на карте. Однако мне не удалось найти подробную документацию или примеры реализации маркеров в статических изображениях.
Как добавить маркеры на карты, созданные с помощью TomTom Static Image API? Существуют ли определенные параметры или форматы, которые необходимо включить в URL-адрес запроса API для достижения этой цели?
Я попробовал использовать API статических изображений TomTom со стандартным форматом URL-адресов для создания изображений карты. Вот URL-адрес, который я использовал: https://api.tomtom.com/map/1/staticimage?key=&zoom=16¢er=37.4219983,-122.084&format=jpg&layer=basic&style=main&width=600&height=300
Я ожидал, что смогу добавить маркеры (булавки) в определенных координатах на карте, добавив соответствующие параметры, но мне не удалось найти никакой документации или четких инструкций по включению маркеров.
[b]Примечание: я просто нужно показать маркер (булавку) на карте. в коде приложения проблем нет.[/b]
Это код, который я использовал для отображения изображения карты в моем приложении:
import 'dart:convert';
import 'package:favorite_places/models/place.dart';
import 'package:flutter/material.dart';
import 'package:location/location.dart';
import 'package:http/http.dart' as http;
class LocationInput extends StatefulWidget {
const LocationInput({
super.key,
});
@override
State createState() {
return _LocationInputState();
}
}
class _LocationInputState extends State {
PlaceLocation? _pickedLocation;
var _isGettingLocation = false;
String get locationImage {
if (_pickedLocation == null) {
return '';
}
final lat = _pickedLocation!.latitude;
final lng = _pickedLocation!.longitude;
return 'https://api.tomtom.com/map/1/staticimage?key={API_KEY}&zoom=4¢er=$lng,$lat&format=jpg&layer=basic&style=main&width=600&height=300&view=Unified&language=en-GB';
}
void _getLocation() async {
Location location = new Location();
bool serviceEnabled;
PermissionStatus permissionGranted;
LocationData locationData;
serviceEnabled = await location.serviceEnabled();
if (!serviceEnabled) {
serviceEnabled = await location.requestService();
if (!serviceEnabled) {
return;
}
}
permissionGranted = await location.hasPermission();
if (permissionGranted == PermissionStatus.denied) {
permissionGranted = await location.requestPermission();
if (permissionGranted != PermissionStatus.granted) {
return;
}
}
setState(() {
_isGettingLocation = true;
});
locationData = await location.getLocation();
final lat = locationData.latitude;
final lng = locationData.longitude;
if (lat == null || lng == null) {
return;
}
final url = Uri.parse(
'https://api.tomtom.com/search/2/reverseGeocode/$lat,$lng.json?key={API_key}&radius=100');
final response = await http.get(url);
final resData = json.decode(response.body);
final address = resData['addresses'][0]['address']['freeformAddress'];
print(lat);
print(lng);
setState(() {
_pickedLocation =
PlaceLocation(latitude: lat, longitude: lng, address: address);
_isGettingLocation = false;
});
}
@override
Widget build(BuildContext context) {
Widget previewContent = Text(
'No location chosen',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.bodyLarge!.copyWith(
color: Theme.of(context).colorScheme.onBackground,
),
);
if (_pickedLocation != null) {
previewContent = Image.network(
locationImage,
fit: BoxFit.cover,
width: double.infinity,
height: double.infinity,
);
}
if (_isGettingLocation) {
previewContent = const CircularProgressIndicator();
}
return Column(
children: [
Container(
height: 170,
width: double.infinity,
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border.all(
width: 1,
color: Theme.of(context).colorScheme.primary.withOpacity(0.2),
),
),
child: previewContent,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
TextButton.icon(
icon: const Icon(Icons.location_on),
label: const Text('Get Current Location'),
onPressed: _getLocation,
),
TextButton.icon(
icon: const Icon(Icons.map),
label: const Text('Select on Map'),
onPressed: () {},
),
],
)
],
);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79220534/adding-markers-to-maps-using-the-tomtom-static-image-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия