關於flutter插件地圖的使用flutter_map

来源:https://www.cnblogs.com/fudong071234/archive/2018/12/04/10066476.html
-Advertisement-
Play Games

關於flutter插件地圖的使用flutter_map flutter_map A Dart implementation of Leaflet for Flutter apps.一個基於leaflet的地圖插件,也就是說flutter_map基於的是瓦片地圖,那麼在相容性上可以說比較好用了。 橫向 ...


關於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 使用:

dependencies:
  flutter_map: ^0.3.0

在需要使用的地方根據自動提示添加packages

import 'packages:.....';

需要註意的是可能需要添加LatLng這個包
使用:

Widget build(BuildContext context) {
    return new FlutterMap(
      options: new MapOptions(
        center: new LatLng(51.5, -0.09),//經緯度,註意前後順序,用於展示中心
        zoom: 13.0,
      ),
      layers: [
        new TileLayerOptions(
          urlTemplate: "https://api.tiles.mapbox.com/v4/"
              "{id}/{z}/{x}/{y}@2x.png?access_token={accessToken}",//瓦片地圖的URL
          additionalOptions: {
            'accessToken': '<PUT_ACCESS_TOKEN_HERE>',
            'id': 'mapbox.streets',//其他附加內容
          },
        ),
        new MarkerLayerOptions(
          markers: [
            new Marker(//! 地圖標記
              width: 80.0,
              height: 80.0,
              point: new LatLng(51.5, -0.09),//經緯度註意順序
              builder: (ctx) =>
              new Container(
                child: new FlutterLogo(),// 在標記的位置加上標記
              ),
            ),
          ],
        ),
      ],
    );
  }

關於瓦片地圖的地址

根據需要將所需要的瓦片地圖的地址填入上面的urlTemplate 一下內容摘選於github

TianDiTu: {
        Normal: {
            Map: "http://t{s}.tianditu.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}",
            Annotion: "http://t{s}.tianditu.cn/DataServer?T=cva_w&X={x}&Y={y}&L={z}"
        },
        Satellite: {
            Map: "http://t{s}.tianditu.cn/DataServer?T=img_w&X={x}&Y={y}&L={z}",
            Annotion: "http://t{s}.tianditu.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}"
        },
        Terrain: {
            Map: "http://t{s}.tianditu.cn/DataServer?T=ter_w&X={x}&Y={y}&L={z}",
            Annotion: "http://t{s}.tianditu.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}"
        },
        Subdomains: ['0', '1', '2', '3', '4', '5', '6', '7']
    },

    GaoDe: {
        Normal: {
            Map: 'http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'
        },
        Satellite: {
            Map: 'http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
            Annotion: 'http://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}'
        },
        Subdomains: ["1", "2", "3", "4"]
    },

    Google: {
        Normal: {
            Map: "http://www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}"
        },
        Satellite: {
            Map: "http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}"
        },
        Subdomains: []
    },

    Geoq: {
        Normal: {
            Map: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
            Color: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetColor/MapServer/tile/{z}/{y}/{x}",
            PurplishBlue: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
            Gray: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}",
            Warm: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}",
            Cold: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetCold/MapServer/tile/{z}/{y}/{x}"
        },
        Subdomains: []

    }
    // 當然還有mapbox
    "https://api.mapbox.com/v4/"
      "{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。離線地圖的最低必填欄位為:

new FlutterMap(
  options: new MapOptions(
    center: new LatLng(56.704173, 11.543808),
    minZoom: <offline map minimum zoom>,
    maxZoom: <offline map maximum zoom>,
    zoom: 13.0,
    swPanBoundary: LatLng(56.6877, 11.5089),
    nePanBoundary: LatLng(56.7378, 11.6644),
  ),
  layers: [
    new TileLayerOptions(
      offlineMode: true,
      maxZoom: <offline map maximum zoom>,
      urlTemplate: "assets/offlineMap/{z}/{x}/{y}.png",
    ),
  ],
),

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 在一個陽光明媚的下午,電腦右下角傳來一片片郵件提醒,同時伴隨著微信釘釘的震動,打開一看,應用各種出錯,天兔告警,資料庫伺服器記憶體爆紅,Mysql資料庫實例掛掉了。 排查 先交代一下資料庫版本: 崩潰故障排除絕不是一項有趣的任務,特別是如果MySQL沒有報告崩潰的原因。例如,當MySQL記憶體不足 ...
  • mysql教程導出資料庫教程幾種方法 方法一 cmd 到mysql bin目錄下用 如下命令 mysqldump --opt -h192.168.0.156 -uusername -ppassword --skip-lock-tables databasename>database.sql 把ip改 ...
  • oracle 總結第二篇,主要總結了oracle的表管理中相關註意的問題 ...
  • redis是一種開源的、基於記憶體的、可持久化的、高性能的Key-Value數據存儲系統。 redis能做什麼? 持久化存儲 高速緩存 消息中間件 2.Redis 安裝配置 高性能(記憶體存儲、僅在需要時持久化到硬碟) 數據類型豐富 (string Hash List Set SortedSet) 支持 ...
  • 項目中需要存儲用戶信息(用戶昵稱有表情符號),自然就遇到了emoji等表情符號如何被mysql DB支持的問題 這裡引用先行者博文:https://segmentfault.com/a/1190000000616820 如果UTF8字元集且是Java伺服器的話,當存儲含有emoji表情時,會拋出類似 ...
  • 本文由騰訊雲資料庫發表 註:本文摘自2018年11月22日騰訊雲資料庫CynosDB新品發佈會的演講實錄。隨著互聯網信息的發展,大家也對雲這個辭彙也不是特別陌生了,作為全球首選的雲服務廠商之一的騰訊雲,依托騰訊多年的業務積累和技術沉澱,我們推出了高性能、低成本、安全可靠的整體數據服務解決方案。並且隨 ...
  • 1 select empno,ename,sal,sal*12 from emp order by sal*12 desc; --表達式 2 select empno,ename,sal,sal*12 年薪 from emp order by 年薪 desc; --別名 3 select empno ...
  • 本文力在從oracle的基礎出發,從oracle的基礎結束,從資料庫的連接、用戶管理、sqlplus使用、plsql工具、存儲過程、函數、包、觸發器等一個DBA經常進行的操作與維護方面入手,旨在從這條最淺顯易懂的學習道路上,瞭解oracle的日常使用。相信對於初學者是個不錯的選擇,也希望自己的這篇整... ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...