亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flutter怎么集成高德地圖并添加自定義Maker

發布時間:2022-04-07 10:45:38 來源:億速云 閱讀:893 作者:iii 欄目:開發技術

這篇文章主要介紹“Flutter怎么集成高德地圖并添加自定義Maker”,在日常操作中,相信很多人在Flutter怎么集成高德地圖并添加自定義Maker問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Flutter怎么集成高德地圖并添加自定義Maker”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、進入高德地圖開放平臺申請Key

Android端需要設置發布版本和調試版本SHA1值,這里可以通過AndroidStudio 自帶工具獲取,

Flutter怎么集成高德地圖并添加自定義Maker

點擊會生成調式SHA1值。發布版本同理。

Flutter怎么集成高德地圖并添加自定義Maker

接著我們設置完SHA1值和包名之后點擊提交即可。

Flutter怎么集成高德地圖并添加自定義Maker

iOS相對簡單,只需要設置BundleId即可。

Flutter怎么集成高德地圖并添加自定義Maker

二、yaml文件集成插件

這里我用的3.0.0版本,(定位功能看個人需求集成)。

# 高德地圖、定位
amap_flutter_location: ^3.0.0
amap_flutter_map: ^3.0.0

這時我們已經成功的將地圖功能集成到我們的Flutter項目中來了。 初始化:在我們需要的頁面添加AMapWidget控件,下面參數按自己需求調整,

AMapWidget(
  mapType: MapType.navi,// 地圖類型
  // customStyleOptions: CustomStyleOptions(
  //   true,
  //   styleData: styleData,
  //   styleExtraData: styleExtraData,
  // ),// 離線地圖 按需添加
  onTap: widget.onTap,// 地圖點擊事件
  rotateGesturesEnabled: false,//旋轉手勢
  tiltGesturesEnabled: false,//傾斜手勢
  scaleEnabled: false,//平移滾動
  // 隱私政策合規
  privacyStatement: AMapPrivacyStatement(
      hasContains: true, hasShow: true, hasAgree: true),
  apiKey: GdMap.aMapApiKey,// 雙端Key值初始化
  onMapCreated: onMapCreated,// 創建成功回調
  markers: Set<Marker>.of(_initMarkerMap.values),// 自定義添加標記物
  // onLocationChanged: (m) {
  //   print("位置回調---${m.accuracy}");
  //   print("位置回調精度---${m.latLng.latitude}");
  //   print("位置回調偉度---${m.latLng.longitude}");
  // },
  onCameraMoveEnd: (pos) {
    //縮放級別
    var zoom = pos.zoom;
    this.zoom = zoom;

    mapCenter =
        LatLng(pos.target.latitude, pos.target.longitude); // 更新中心點
    if (isLoad) {
      // 添加maker
      loadMakers(pos.target.latitude, pos.target.longitude);
    }
  },
),

特別注意:隱私政策合規這個參數必須要設置,否則地圖加載不出來,并且一定要設置在首次安裝啟動彈窗之后初始化,目前國家對于個人隱私政策非常重視,Android應用市場的審核也對個人隱私加大了審核力度。到這里集成基本已經完成了,大家可以根據自己的業務需求來進行擴展。
三、添加自定義Maker
官方覆蓋物只支持添加Bitmap類型,并不可以像原生那樣添加一個自定義控件或者自定義布局,

/// 覆蓋物的圖標
final BitmapDescriptor icon;

但是官方有一個這樣的方法:通過字節流轉換,我的思路是將自定義Widget轉換為字節流再轉換為bitmap不就可以了嗎?

/// 根據將PNG圖片轉換后的二進制數據[byteData]創建BitmapDescriptor
static BitmapDescriptor fromBytes(Uint8List byteData) {
  return BitmapDescriptor._(<dynamic>['fromBytes', byteData]);
}

思路: 通過RenderObjectToWidgetElement 將我們的Widget轉換為image,再將image轉換為字節流,這樣就完美實現了自定義Maker的需求。
注意: 自定義Widget如果有文本Text組件的話必須加入Directionality嵌套并加上textDieecton屬性,這個屬性是代表書寫順序,從左到右,有些國家是從右到左,所以這塊需要注意。

child: Directionality(
    textDirection: TextDirection.ltr,
    child:child),

源碼:

static Future<ByteData?> widgetToImage(Widget widget,
    {Alignment alignment = Alignment.center,
    Size size = const Size(double.maxFinite, double.maxFinite),
    double devicePixelRatio = 1.0,
    double pixelRatio = 1.0}) async {
  RenderRepaintBoundary repaintBoundary = RenderRepaintBoundary();

  RenderView renderView = RenderView(
    child: RenderPositionedBox(alignment: alignment, child: repaintBoundary),
    configuration: ViewConfiguration(
      size: size,
      devicePixelRatio: devicePixelRatio,
    ),
    window: ui.window,
  );

  PipelineOwner pipelineOwner = PipelineOwner();
  pipelineOwner.rootNode = renderView;
  renderView.prepareInitialFrame();

  BuildOwner buildOwner = BuildOwner(focusManager: FocusManager());
  RenderObjectToWidgetElement rootElement = RenderObjectToWidgetAdapter(
    container: repaintBoundary,
    child: widget,
  ).attachToRenderTree(buildOwner);
  buildOwner.buildScope(rootElement);
  buildOwner.finalizeTree();

  pipelineOwner.flushLayout();
  pipelineOwner.flushCompositingBits();
  pipelineOwner.flushPaint();

  ui.Image image = await repaintBoundary.toImage(pixelRatio: pixelRatio);
  ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);

  return byteData;
}

到此,關于“Flutter怎么集成高德地圖并添加自定義Maker”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五华县| 宜都市| 永丰县| 林周县| 凉城县| 临海市| 黄龙县| 霍城县| 阿克苏市| 丰都县| 新蔡县| 鹤峰县| 慈溪市| 舒兰市| 太谷县| 安塞县| 阜宁县| 九寨沟县| 渝中区| 平昌县| 静安区| 工布江达县| 涿州市| 老河口市| 湟源县| 永吉县| 苍梧县| 商南县| 肥乡县| 翼城县| 大港区| 湟中县| 富民县| 永定县| 惠东县| 公安县| 高青县| 太仓市| 汉中市| 禹州市| 静乐县|