Index

FengMap JavaScript SDK for 微信小程序快速开发指南

在当前版本中,SDK 基于微信小程序基础库 v2.11.0 及以上版本进行编译开发,使用规则有局部的变化,用来适用微信小程序。

注意:在当前版本中,使用的图片资源,例如,FMImageMarker,顶面贴图,模型纹理等,图片的宽度和高度需要满足 2的N次方。例如,16,32,256,512 等

微信白名单设置

由于微信本身的安全策略,请在小程序后台将以下域名加入到您的 request合法域名

https://console.fengmap.com
https://oss.fengmap.com

地图初始化

在微信小程序SDK中,我们需要向使用地图的主界面 wxml 文件中添加两个 canvas, 分别用来作为地图渲染时使用的容器和用作临时渲染图像的使用。其中,作为主地图渲染的 canvas 需要分别绑定 touchMovetouchMovetouchEnd 三个事件用来响应手势的交互控制, 用作临时渲染的2d canvas画布需要自定义隐藏,例如画布放置可视范围之外。

注意:安卓系统不可以使用display:none进行隐藏.

定义界面容器

    <canvas type="webgl" id="fengmap" style="width: 100%; height: 100%;" bindtouchstart
    ="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd">
    <canvas type="2d" id="overlay" style="display:none"></canvas>

SDK 的引入方式

// 方式1-模块化引入(3.1.8及之后版本推荐的引入方式)
import { FMWXSetting, FMMap } from '../../utils/fengmap.minimap.min.js';

// 方式2-批量引入
import { fmMap } from '../../utils/fengmap.minimap.min.js';
const fengmap = {
  ...fmMap,
}

初始化地图容器

    import { fmMap } from '../../utils/fengmap.minimap.min.js';

    const fengmap = {
        ...fmMap,
    }

    // 地图容器,非全屏时需要设置如下两步, 全屏情况可以不用设置。
    wx.createSelectorQuery().select('#fengMap').boundingClientRect(rect => {
      fengmap.FMWXSetting.boundingClientRect = rect;

      // 获取canvas
      wx.createSelectorQuery().select('#fengmap').node().exec((res) => {
        const canvas = res[0].node;

        wx.createSelectorQuery().select("#overlay").node().exec((tempRes) => {
          const tmpCanvas = tempRes[0].node;
          fengmap.FMWXSetting.textureCanvas = [ tmpCanvas ];

          var mapOptions = {
            container: canvas, // 必要,webgl画布
            appName: '蜂鸟研发SDK_2_0',
            key: '57c7f309aca507497d028a9c00207cf8',
          };

          //初始化地图对象
          fmap = new fengmap.FMMap(mapOptions);
        })
      })
    }).exec();

使用插件

需要在 app.js 定义全局数据。


import { fmMap } from './utils/fengmap.minimap.min.js';
import { fmAnalyser } from './utils/fengmap.minianalyser.min.js';
import { fmNavi } from './utils/fengmap.miniplugin.navi.min.js';

const fengmap = {
    ...fmMap,
    ...fmAnalyser,
    ...fmNavi,
}

App({
  onLaunch: function () {},
  globalData: {
    fengmap
  }
})

在使用页面:

const fengmap = getApp().globalData.fengmap;

注册事件

    Page({
        touchStart(e) {
        this.canvas.dispatchTouchEvent({
          ...e,
          type: 'touchstart'
        })
        },
        touchMove(e) {
        this.canvas.dispatchTouchEvent({
          ...e,
          type: 'touchmove'
        })
        },
        touchEnd(e) {
        this.canvas.dispatchTouchEvent({
          ...e,
          type: 'touchend'
        })
        }
    })

更多内容,请访问 蜂鸟云开发者中心