引言

小程序地图标点可以自己写死也可以根据后台数据自动标点,实现根据后台数据标点便于后期小程序的维护

问题

1、根据后台数据返回的经纬度,将标记点渲染到地图上

2、点击各个标记点,显示其一些详细信息

方法

思路比较简单,获取后台数据后用for循环遍历经纬度并将其放入markers中即可。这里我们用wx.request获取极速数据API的加油站数据。

wx.request的属性如下:

根据后台数据标点_ajax

详情请进RequestTask | 微信开放文档 (qq.com)查看。

极速数据API:

根据后台数据标点_js_02

详情请进加油站查询API接口_免费数据接口 - 极速数据 (jisuapi.com)查看。

index.wxml

<map
style="width:100%;height:500px"
markers="{{markers}}"
latitude="{{markers[0].latitude}}" longitude="{{markers[0].longitude}}"
></map>
var app=getApp();
Page({
/**
* 页面的初始数据
*/
data: {
markers:[],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that=this;
//获得后台数据,并显示标记
wx.request({
url: 'https://api.jisuapi.com/oilstation/nearby?appkey=' + app.globalData.appkey,
data:{//请求的参数
lat:latitude,
lng: longitude,
distance:10000,
},
success:function(res){//请求成功之后执行的方法
var result=res.data.result;
console.log('结果是:',result)//在控制台打印出请求结果
for(var i=0;i<result.length;i++){//用for循环将返回的经纬度放入markers中
let lat=result[i].lat; //取出每条数据中的参数
let lng=result[i].lng;
let name=result[i].name;
let address = result[i].address;
let tel = result[i].tel;
var index="markers["+(i)+"]";
that.setData({
[index]:{
latitude: lat,
longitude: lng,
iconPath: "../../image/site.png",//标记点的图标
width: 30,
height: 30,
callout: {
content: name+'\n'+address+'\n'+tel,//显示相关信息
color: 'red',
fontSize: 13,
borderRadius: 5,
borderWidth: 1,
borderColor: '#0000ff',
padding: 2,
display: 'BYCLICK'
}
},
})
}
}
})
},
})

app.js

//app.js
App({
onLaunch: function () {
},
globalData: {
userInfo: null,
appkey:'8bfb05c835c756bc'//你申请的appkey
}
})

使用wx.request需要在详情 ==> 本地设置 中打开【不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书】

如图:

根据后台数据标点_js_03

实验结果与讨论

最终结果如图:

根据后台数据标点_ajax_04

控制台打印的后台数据:

根据后台数据标点_java_05

结语

根据后台在地图上标点的重点是拿到数据后如何处理,这里我们用for循环将其放入markers中,总体上较为简单。下期将介绍如何计算自己位置与标记点之间的距离

实习编辑:李欣容