日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微信小程序自带地图_【小程序】微信小程序之地图功能

發(fā)布時(shí)間:2024/10/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序自带地图_【小程序】微信小程序之地图功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本使用

地圖組件使用起來也很簡單。

.wxml

參數(shù)列表及說明如下:

除了顯示基本地圖,還可以在地圖上添加markers–標(biāo)注,polyline–折線,circles–圓形,controls–控件。

markers

data: {

//

markers: [{

iconPath: "../../img/marker_red.png",

id: 0,

latitude: 40.002607,

longitude: 116.487847,callout:{

content:'氣泡名稱',

color: '#FF0000',

fontSize: 15,

borderRadius: 10,

display: 'ALWAYS',

}

width:35,

height:45

}],

... //省略代碼

}

#########################################################################

在data中定義markers變量來表示覆蓋物

然后map控件引入即可:

效果如下:

polyline

data: {

//

polyline: [{

points: [{

longitude: '116.481451',

latitude: '40.006822'

}, {

longitude: '116.487847',

latitude: '40.002607'

}, {

longitude: '116.496507',

latitude: '40.006103'

}],

color: "#FF0000DD",

width: 3,

dottedLine: true

}],

... //省略代碼

}

1

circles

data: {

//

circles: [{

latitude: '40.007153',

longitude: '116.491081',

color: '#FF0000DD',

fillColor: '#7cb5ec88',

radius: 400,

strokeWidth: 2

}],

... //省略代碼

}

1

效果如下:

controls

controls: [{

id: 1,

iconPath: '../../img/marker_yellow.png',

position: {

left: 0,

top: 300 - 50,

width: 50,

height: 50

},

clickable: true

}]

1

control點(diǎn)擊事件如下:

controltap: function (e) {

console.log(e.controlId);

},

其實(shí)可以通過在map上添加一個(gè)按鈕,來實(shí)現(xiàn)諸如:定位、狀態(tài)返回等操作。

(直接通過布局文件在map上添加view是顯示不出來的)

綁定事件

BUG

關(guān)于經(jīng)緯度,官方文檔上都寫的是Number類型。但是通過IDE調(diào)試的時(shí)候,寫成字符串也是可以的。但是在IOS真機(jī)上運(yùn)行時(shí),markers卻顯示不出來,也不報(bào)錯(cuò)。

后來自己對照屬性的類型,發(fā)現(xiàn)后臺傳來的經(jīng)緯度是字符串類型的。而字符串類型的經(jīng)緯度在IOS真機(jī)上經(jīng)測試就是顯示不出來。

所以將字符串轉(zhuǎn)成Number類型即可。

百度地圖API

百度地圖團(tuán)隊(duì)的速度還是不錯(cuò)的!在小程序正式公測的第三天(2017.1.11)就發(fā)布了小程序版百度地圖API

然而一期的功能并不多:

POI檢索服務(wù)

POI檢索熱刺聯(lián)想服務(wù)

逆地址解析服務(wù)

天氣查詢

關(guān)于這四個(gè)功能,大家自行去調(diào)用API就是了!

我要吐槽的是,為什么只有逆地址解析服務(wù),沒有地址編碼服務(wù)呢?!

好吧,你不提供,我加上好吧!!

其實(shí)上面看到的四個(gè)API也是從他們原有的web服務(wù)API中抽出來的 !

核心代碼如下:

let startGeocoding = function (e) {

wx.request({

url: 'https://api.map.baidu.com/geocoder/v2/',

data: geocodingparam,

header: {

"content-type": "application/json"

},

method: 'GET',

success(data) {

let res = data["data"];

if (res["status"] === 0) {

let result = res["result"];

// outputRes 包含兩個(gè)對象,

// originalData為百度接口返回的原始數(shù)據(jù)

// wxMarkerData為小程序規(guī)范的marker格式

let outputRes = {};

outputRes["originalData"] = res;

outputRes["wxMarkerData"] = [];

outputRes["wxMarkerData"][0] = {

id: 0,

latitude: result["location"]['lat'],

longitude: result["location"]['lng'],

address: geocodingparam["address"],

iconPath: otherparam["iconPath"],

iconTapPath: otherparam["iconTapPath"],

desc: '',

business: '',

alpha: otherparam["alpha"],

width: otherparam["width"],

height: otherparam["height"]

}

otherparam.success(outputRes);

} else {

otherparam.fail({

errMsg: res["message"],

statusCode: res["status"]

});

}

},

fail(data) {

otherparam.fail(data);

}

});

};

使用方法:

// 地理編碼

startGeocoding: function () {

Bmap.geocoding({

fail: fail,

success: success,

address: '北京大學(xué)',

iconPath: '../../img/marker_red.png',

iconTapPath: '../../img/marker_red.png'

})

},

然后我還對靜態(tài)圖這個(gè)API進(jìn)行了小程序化!!!

/**

* 靜態(tài)圖

*

* @author ys

*

* @param {Object} param 檢索配置

* http://lbsyun.baidu.com/index.php?title=static

*/

getStaticImage(param) {

var that = this;

param = param || {};

let staticimageparam = {

ak: that.ak2,

width: param["width"] || 400,

height: param["height"] || 300,

center: param["center"] || '北京', // 地址或者經(jīng)緯度

scale: param["scale"] || 1, // 是否為高清圖 返回圖片大小會(huì)根據(jù)此標(biāo)志調(diào)整。取值范圍為1或2。 1表示返回的圖片大小為size= width *height; 2表示返回圖片為(width*2)*(height *2),且zoom加1 注:如果zoom為最大級別,則返回圖片為(width*2)*(height*2),zoom不變。

zoom: param["zoom"] || 11, //高清圖范圍[3, 18];0低清圖范圍[3,19]

copyright: param["copyright"] || 1, // 0表示log+文字描述樣式,1表示純文字描述樣式

markers: param["markers"] || null, // 標(biāo)注,可通過經(jīng)緯度或地址/地名描述;多個(gè)標(biāo)注之間用豎線分隔

};

return "http://api.map.baidu.com/staticimage/v2?" + "ak=" + staticimageparam["ak"] + "&width=" + staticimageparam["width"] + "&height=" + staticimageparam["height"] + "&center=" + staticimageparam["center"] + "&zoom=" + staticimageparam["zoom"] + "&scale=" + staticimageparam["scale"] + "&copyright=" + staticimageparam["copyright"];

}

關(guān)于靜態(tài)圖,在web端調(diào)用的時(shí)候需要單獨(dú)申請key,所以這里要在傳入一個(gè)key!

在BMapWX構(gòu)造函數(shù)中,傳入ak2作為靜態(tài)圖的key

constructor(param) {

this.ak = param["ak"];

this.ak2 = param["ak2"];

}

var Bmap = new bmap.BMapWX({

ak: 'xxxxxxxxxxx',

ak2: 'xxxxxxxxxxx'

});

使用方法也很簡單:

//獲取靜態(tài)圖

getStaticImage: function () {

var url = Bmap.getStaticImage({

scale: 2

});

console.log(url);

that.setData({

staticImageUrl: url

})

}

高德地圖API

相比百度地圖團(tuán)隊(duì),高德地圖團(tuán)隊(duì)更及時(shí)! 小程序公測第二天就發(fā)布了?小程序高德地圖API

目前提供的功能有:

獲取POI數(shù)據(jù)

獲取地址描述數(shù)據(jù)

獲取實(shí)時(shí)天氣數(shù)據(jù)

獲取輸入提示詞

路徑規(guī)劃

繪制靜態(tài)圖

在官網(wǎng)上,直接提供了路徑規(guī)劃的功能代碼,和布局代碼(.wxml & .wxss)

可見,高德還是比較靠譜的!

騰訊地圖API

地點(diǎn)搜索

關(guān)鍵詞輸入提示

逆地址解析

地址解析

距離計(jì)算

獲取城市列表

獲取城市區(qū)縣

注意

使用需要注意以下幾點(diǎn):

map 組件是由客戶端創(chuàng)建的原生組件,它的層級是最高的。

請勿在 scroll-view 中使用 map 組件。

css 動(dòng)畫對 map 組件無效。

百度地圖小程序SDK擴(kuò)展下載地址:

總結(jié)

以上是生活随笔為你收集整理的微信小程序自带地图_【小程序】微信小程序之地图功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。