Flutter地理位置与地图展示插件dotup_dart_geolocation_here_maps的使用
Flutter地理位置与地图展示插件dotup_dart_geolocation_here_maps的使用
dotup_dart_geolocation_here_maps
是一个用于Dart开发者的HERE Maps API包装器库。
使用
以下是一个简单的使用示例:
import 'package:dotup_dart_geolocation_here_maps/dotup_dart_geolocation_here_maps.dart';
void main() async {
// 初始化API,需要你的HERE API密钥
final api = HereMapsGeoLocationService(apiKey: 'YOUR_HERE_API_KEY');
// 创建地址对象
final address = Address(
street: 'Industriering',
houseNumberOrName: '7',
postalCode: '63868',
city: 'Großwallstadt'
);
// 获取地理坐标
final location = await api.getGeoCoordinatesFromAddress(address);
// 地理编码(通过地址获取地理坐标)
final result = await api.geoCode(searchtext: address.asSingleLineString());
final searchedLocation = result.geoCode!.getGeoCoordinates();
// 反向地理编码(通过地理坐标获取地址)
final y = await api.reverseGeoCode(geoCoordinates: location);
final sorted = await api.getAddressFromGeoCoordinates(searchedLocation!);
final sortedList = await api.getAddressListFromGeoCoordinates(searchedLocation);
// 打印结果
print(location);
}
安装
在 pubspec.yaml
文件中添加依赖:
dependencies:
dotup_dart_geolocation_here_maps: ^x.x.x
然后运行以下命令安装依赖:
flutter pub get
示例代码
以下是一个完整的示例代码,展示了如何使用 dotup_dart_geolocation_here_maps
插件:
import 'dart:io';
import 'package:dotup_dart_geolocation_core/dotup_dart_geolocation_core.dart';
import 'package:dotup_dart_geolocation_here_maps/dotup_dart_geolocation_here_maps.dart';
import 'package:yaml/yaml.dart';
import 'package:path/path.dart' as p;
void main() async {
// 获取当前目录
var dir = Directory.current;
// 拼接配置文件路径
final path = p.join(Directory.current.path, 'example', 'secrets', '.dev.env.yaml');
// 读取配置文件
final file = File(path);
final yaml = loadYaml(file.readAsStringSync());
// 获取HERE API密钥
final apiKey = yaml['config']['here']['API_KEY'];
// 初始化API
final api = HereMapsGeoLocationService(apiKey: apiKey);
// 创建地址对象
final address = Address(
street: 'Industriering',
houseNumberOrName: '7',
postalCode: '63868',
city: 'Großwallstadt'
);
// 获取地理坐标
final location = await api.getGeoCoordinatesFromAddress(address);
// 地理编码(通过地址获取地理坐标)
final singleLineAddress = address.asSingleLineString();
final result = await api.geoCode(searchtext: singleLineAddress);
final searchedLocation = result.geoCode!.getGeoCoordinates();
// 反向地理编码(通过地理坐标获取地址)
final y = await api.reverseGeoCode(geoCoordinates: location);
final sorted = await api.getAddressFromGeoCoordinates(searchedLocation!);
final sortedList = await api.getAddressListFromGeoCoordinates(searchedLocation);
// 打印结果
print(location);
}
更多关于Flutter地理位置与地图展示插件dotup_dart_geolocation_here_maps的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter地理位置与地图展示插件dotup_dart_geolocation_here_maps的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
dotup_dart_geolocation_here_maps
是一个用于在 Flutter 应用中获取地理位置并展示地图的插件。它结合了 dotup_dart_geolocation
和 HERE Maps 的功能,允许开发者轻松地获取用户的地理位置并在 HERE 地图上展示。
以下是使用 dotup_dart_geolocation_here_maps
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加插件的依赖:
dependencies:
flutter:
sdk: flutter
dotup_dart_geolocation_here_maps: ^0.0.1 # 请检查最新版本
然后,运行 flutter pub get
来安装依赖。
2. 获取 HERE Maps API 密钥
要使用 HERE Maps,你需要注册一个 HERE 开发者账号并获取 API 密钥。访问 HERE Developer Portal 注册并获取你的 API 密钥。
3. 初始化插件
在你的 Flutter 应用中初始化 dotup_dart_geolocation_here_maps
插件。你需要在 main.dart
或某个初始化文件中设置 HERE Maps 的 API 密钥。
import 'package:dotup_dart_geolocation_here_maps/dotup_dart_geolocation_here_maps.dart';
void main() {
HereMapService.initialize(apiKey: 'YOUR_HERE_MAPS_API_KEY');
runApp(MyApp());
}
4. 获取地理位置
使用 dotup_dart_geolocation
获取用户的地理位置。
import 'package:dotup_dart_geolocation/dotup_dart_geolocation.dart';
Future<void> getLocation() async {
var geolocation = Geolocation();
var position = await geolocation.getCurrentPosition();
print('Latitude: ${position.latitude}, Longitude: ${position.longitude}');
}
5. 展示 HERE 地图
使用 HereMapWidget
来展示 HERE 地图,并将获取到的地理位置标记在地图上。
import 'package:flutter/material.dart';
import 'package:dotup_dart_geolocation_here_maps/here_map_widget.dart';
class MapScreen extends StatelessWidget {
final double latitude;
final double longitude;
MapScreen({required this.latitude, required this.longitude});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('HERE Map'),
),
body: HereMapWidget(
center: LatLng(latitude, longitude),
zoom: 14.0,
markers: [
Marker(
position: LatLng(latitude, longitude),
label: 'Your Location',
),
],
),
);
}
}
6. 完整示例
以下是一个完整的示例,展示了如何获取地理位置并在 HERE 地图上展示:
import 'package:flutter/material.dart';
import 'package:dotup_dart_geolocation/dotup_dart_geolocation.dart';
import 'package:dotup_dart_geolocation_here_maps/here_map_widget.dart';
void main() {
HereMapService.initialize(apiKey: 'YOUR_HERE_MAPS_API_KEY');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
double? latitude;
double? longitude;
Future<void> getLocation() async {
var geolocation = Geolocation();
var position = await geolocation.getCurrentPosition();
setState(() {
latitude = position.latitude;
longitude = position.longitude;
});
}
[@override](/user/override)
void initState() {
super.initState();
getLocation();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Geolocation with HERE Map'),
),
body: latitude == null || longitude == null
? Center(child: CircularProgressIndicator())
: MapScreen(latitude: latitude!, longitude: longitude!),
);
}
}
class MapScreen extends StatelessWidget {
final double latitude;
final double longitude;
MapScreen({required this.latitude, required this.longitude});
[@override](/user/override)
Widget build(BuildContext context) {
return HereMapWidget(
center: LatLng(latitude, longitude),
zoom: 14.0,
markers: [
Marker(
position: LatLng(latitude, longitude),
label: 'Your Location',
),
],
);
}
}