微信公众号集成百度地图api,实现收货地址选择

前端框架用的是vue,jqueryweui。

html页面:

<!DOCTYPE html>

<html lang="zh-cmn-Hans">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

<title>选择地址</title>

<script type="text/javascript"

src="http://api.map.baidu.com/api?v=2.0&ak=你的ak"></script>

</head>

<body>

<div class="page" id="rrapp" v-cloak>

<!--搜索start -->

    <div style="height:auto;">

        <input type="search" id="indexSearchBox" placeholder="搜索地址" class="left">

            <button id="searchBtn" @click="searchBtn">搜索</button>

    </div>

<!--搜索end  -->

<!--地图start  -->

<div id="allMap"></div>

<!--地图end  -->

<!-- 地址列表start -->

<div id="log" class="weui-cells weui-cells_radio"></div>

<!-- 地址列表end -->

</div>

</body>

</html>

js:

//位置

var local = null;

//地图

var map = null;

var vm = new Vue({

el:'#rrapp',

data:{

logHeight:'',

longitude:'',//经度

latitude:'', //纬度

},

methods: {

//初始化地图

map: function(){

//动态改变地址的显示的高度

vm.logHeight = $(window).height()-439;

$("#log").css("height",vm.logHeight+"px");

//地图初始化

map = new BMap.Map("allMap");

if($("#indexSearchBox").val() == null || $("#indexSearchBox").val() == ""){

map.centerAndZoom(new BMap.Point(vm.longitude,vm.latitude), 17);

}else{

map.centerAndZoom($("#indexSearchBox").val(),17);

}

//移除覆盖物

map.clearOverlays();

var options = {

    onSearchComplete: function(results){

    if (local.getStatus() == BMAP_STATUS_SUCCESS){

    var str = "";

    for (var i = 0; i < results.getCurrentNumPois(); i ++){

    // s.push(results.getPoi(i).title + "-->" + results.getPoi(i).address+"-->"+results.getPoi(i).point.lat+"-->"+results.getPoi(i).point.lng+"\n");

    str += "<label class='weui-cell weui-check__label' :for='"+results.getPoi(i).uid+"' οnclick='chooseAddress(\""+results.getPoi(i).title+"\",\""+results.getPoi(i).address+"\",\""+results.getPoi(i).point.lat+"\",\""+results.getPoi(i).point.lng+"\")'>"+

    "<div class='weui-cell__bd'><span class='title'>"+results.getPoi(i).title+"</span><br/><span class='address'>"+results.getPoi(i).address+"</span></div>"+

    "<div class='weui-cell__ft'><input required='' type='radio' class='weui-check' name='address' value='"+results.getPoi(i).uid+"' :id='"+results.getPoi(i).uid+"'>"+

    "<span class='weui-icon-checked'></span></div></label>";

    }

    var new_point = new BMap.Point(results.getPoi(0).point.lng,results.getPoi(0).point.lat);

    var marker = new BMap.Marker(new_point);  // 创建标注

    map.addOverlay(marker);// 将标注添加到地图中

    $("#log").html(str);

    } 

    }

    };

local = new BMap.LocalSearch(map, options);

if($("#indexSearchBox").val() == null || $("#indexSearchBox").val() == ""){

// 创建地理编码(地理解析器)实例

var myGeo = new BMap.Geocoder();

// 根据坐标得到地址描述

myGeo.getLocation(new BMap.Point(vm.longitude,vm.latitude), function(result){      

    if (result){

    local.search(result.address);

    }

});

var new_point = new BMap.Point(vm.longitude,vm.latitude);

var marker = new BMap.Marker(new_point);  // 创建标注

map.addOverlay(marker);// 将标注添加到地图中

}

 

},

//搜索

searchBtn:function(){

//获取搜索框要搜索的内容

local.search($("#indexSearchBox").val());

//根据搜索框的内容,改变地图显示的中心点的位置

if($("#indexSearchBox").val() == null || $("#indexSearchBox").val() == ""){

map.centerAndZoom(new BMap.Point(vm.longitude,vm.latitude),17);

}else{

map.centerAndZoom($("#indexSearchBox").val(),17);

}

}

}

});

$(function(){

get_signature();

})

function get_signature(){

$.ajax({

type: "POST",

    url: "../api/sign_url",

    data: {

    url:location.href.split('#')[0],

    },

    dataType: "json",

    async:false,

    contentType : "application/x-www-form-urlencoded",

    success: function(r){

    if(r.error=="0"){

    wechat_location_config(r.appId,r.nonceStr,r.signature,r.timestamp,r.fileFsServer);

    }

},

error: function (err) {

       }

});

}

function wechat_location_config(appId,nonceStr,signature,timestamp,fileFsServer){

wx.config({

debug : false,

appId : appId,

timestamp : timestamp,

nonceStr : nonceStr,

signature : signature,

jsApiList : [

'scanQRCode',

'checkJsApi',

'getNetworkType',//网络状态接口

     'openLocation',//使用微信内置地图查看地理位置接口

            'getLocation'

         ]

});

wx.error(function(e) {

 

});

wx.ready(function() { 

        // 获取用户位置

        wx.getLocation({

            success : function(res) {

                if(res.errMsg =="getLocation:ok"){

                vm.latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90  

                vm.longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180

                //初始化地图

                vm.map();

                }else{

                $.toast("定位失败", "text");

                }

            },  

            fail : function(res) {

            $.toast("定位失败", "text");

            }  

        }); 

    });

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值