当前位置:   article > 正文

flutter插件中关于地图的使用flutter_map_import { fleetmap } from '@/vendor/fleetmap/fleetm

import { fleetmap } from '@/vendor/fleetmap/fleetmap

关于flutter插件地图的使用flutter_map

flutter_map

A Dart implementation of Leaflet for Flutter apps.
一个基于leaflet的地图插件,也就是说flutter_map基于的是瓦片地图,那么在兼容性上可以说比较好用了。

横向对比

目前主要的地图插件主要有: flutter_map map_view``amap

map_view

先说下map_view这个插件,这个插件主要是用来展示google map使用。 由于一个我们都知道的原因,我们在使用这个插件的过程中相对比较困难,所以我们可是适当放弃使用这plugin。

flutter_amap

每次看到版本为0.0.1的插件总觉得哪里有问题的,这是高德推出的插件。 高德地图3d flutter组件。

展示原生android、ios高德地图,并与flutter交互。

注意:随着flutter版本的提升, 本项目也会随之更新, 目前这个版本只能在单独的controller或者activity中打开高德地图。 划线部分表示说这个版本还不是很成熟,因此我也不想用

flutter_map

这个插件就是要重点说下的了 ,下面的视频可能需要代理才能光看,示例: 视频 image

地址https://pub.dartlang.org/packages/flutter_map
githubhttps://github.com/apptreesoftware/flutter_map 使用:

  1. dependencies:
  2. flutter_map: ^0.3.0

在需要使用的地方根据自动提示添加packages

import 'packages:.....';

需要注意的是可能需要添加LatLng这个包
使用:

  1. Widget build(BuildContext context) {
  2. return new FlutterMap(
  3. options: new MapOptions(
  4. center: new LatLng(51.5, -0.09),//经纬度,注意前后顺序,用于展示中心
  5. zoom: 13.0,
  6. ),
  7. layers: [
  8. new TileLayerOptions(
  9. urlTemplate: "https://api.tiles.mapbox.com/v4/"
  10. "{id}/{z}/{x}/{y}@2x.png?access_token={accessToken}",//瓦片地图的URL
  11. additionalOptions: {
  12. 'accessToken': '<PUT_ACCESS_TOKEN_HERE>',
  13. 'id': 'mapbox.streets',//其他附加内容
  14. },
  15. ),
  16. new MarkerLayerOptions(
  17. markers: [
  18. new Marker(//! 地图标记
  19. width: 80.0,
  20. height: 80.0,
  21. point: new LatLng(51.5, -0.09),//经纬度注意顺序
  22. builder: (ctx) =>
  23. new Container(
  24. child: new FlutterLogo(),// 在标记的位置加上标记
  25. ),
  26. ),
  27. ],
  28. ),
  29. ],
  30. );
  31. }

关于瓦片地图的地址

根据需要将所需要的瓦片地图的地址填入上面的urlTemplate 一下内容摘选于github

  1. TianDiTu: {
  2. Normal: {
  3. Map: "http://t{s}.tianditu.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}",
  4. Annotion: "http://t{s}.tianditu.cn/DataServer?T=cva_w&X={x}&Y={y}&L={z}"
  5. },
  6. Satellite: {
  7. Map: "http://t{s}.tianditu.cn/DataServer?T=img_w&X={x}&Y={y}&L={z}",
  8. Annotion: "http://t{s}.tianditu.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}"
  9. },
  10. Terrain: {
  11. Map: "http://t{s}.tianditu.cn/DataServer?T=ter_w&X={x}&Y={y}&L={z}",
  12. Annotion: "http://t{s}.tianditu.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}"
  13. },
  14. Subdomains: ['0', '1', '2', '3', '4', '5', '6', '7']
  15. },
  16. GaoDe: {
  17. Normal: {
  18. Map: 'http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'
  19. },
  20. Satellite: {
  21. Map: 'http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
  22. Annotion: 'http://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}'
  23. },
  24. Subdomains: ["1", "2", "3", "4"]
  25. },
  26. Google: {
  27. Normal: {
  28. Map: "http://www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}"
  29. },
  30. Satellite: {
  31. Map: "http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}"
  32. },
  33. Subdomains: []
  34. },
  35. Geoq: {
  36. Normal: {
  37. Map: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
  38. Color: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetColor/MapServer/tile/{z}/{y}/{x}",
  39. PurplishBlue: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
  40. Gray: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}",
  41. Warm: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}",
  42. Cold: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetCold/MapServer/tile/{z}/{y}/{x}"
  43. },
  44. Subdomains: []
  45. }
  46. // 当然还有mapbox
  47. "https://api.mapbox.com/v4/"
  48. "{id}/{z}/{x}/{y}@2x.png?access_token={accessToken}"

使用mapbox: 1、创建mapbox账户获取apikey 2、打开leaflet_flutter_example/lib/main.dart粘贴key到:additionalOptionsmap中

使用离线地图

按照本指南获取离线地图块将地图导出后.mbtiles,可以使用mbtilesToPng解压缩/{z}/{x}/{y}.png。将其移动到Assets文件夹并将Asset目录添加到pubspec.yaml。离线地图的最低必填字段为:

  1. new FlutterMap(
  2. options: new MapOptions(
  3. center: new LatLng(56.704173, 11.543808),
  4. minZoom: <offline map minimum zoom>,
  5. maxZoom: <offline map maximum zoom>,
  6. zoom: 13.0,
  7. swPanBoundary: LatLng(56.6877, 11.5089),
  8. nePanBoundary: LatLng(56.7378, 11.6644),
  9. ),
  10. layers: [
  11. new TileLayerOptions(
  12. offlineMode: true,
  13. maxZoom: <offline map maximum zoom>,
  14. urlTemplate: "assets/offlineMap/{z}/{x}/{y}.png",
  15. ),
  16. ],
  17. ),

Make sure PanBoundaries are within offline map boundary to stop missing asset errors.
See the flutter_map_example/ folder for a working example

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/383173
推荐阅读
相关标签
  

闽ICP备14008679号