【地图API】收货地址详解2

上次讲解的方法是:

在地图中心点添加一个标注,每次拖动地图就获取地图中心点,再把标注的位置设置为地图中心点。可参考教程:http://www.cnblogs.com/milkmap/p/6126424.html

可能有开发者觉得,这个算法会有“延时”,这次提供一个新的方法:

将一张标注图片始终固定在地图中央,不在地图上添加标注。

使用CSS将一张标注样子的图片,固定在地图中央。

<style>
        #mapBox{height:400px;width:600px;position:absolute;}
        #img_point{position:absolute;top:200px;left:300px;z-index:9999999;}
</style>

创建地图

//创建地图
var map = new AMap.Map("mapBox", {
    resizeEnable: true,
    center: [116.397428, 39.90923],
    zoom:14
});

获取并打印当前地图中央的经纬度

//打印当前经纬度
function addCenterPoint(){
    var centerPoint = map.getCenter();
    $pointBox.innerHTML = "当前经纬度为:" + centerPoint.getLng() + ‘,‘ + centerPoint.getLat();
}
addCenterPoint();

当地图滑动时,打印当前地图中央经纬度

//添加地图事件
map.on(‘moveend‘, function() {
    addCenterPoint();
});

到这里,就完成了拖动地图,就可以打印地图中心点。同时,保持了标注图片一直在地图中央显示。

示例:http://zhaoziang.com/amap/deliver_address_point.htm

进阶的做法:

您还可以把地址解析的功能加上,当输入结构化地址时,如果地址解析成功,就重新设置地图中心点。

function geocoder() {
    var myGeo = new AMap.Geocoder();
    //地理编码,返回地理编码结果
    myGeo.getLocation($addressBox.value, function(status, result) {
        if (status === ‘complete‘ && result.info === ‘OK‘) {
            //地址解析成功
            geocoder_CallBack(result);
        }
        else{
            //地址解析失败
            $pointBox.innerHTML = "查无此地址";
        }
    });
}

//地理编码返回结果展示
function geocoder_CallBack(data) {
    var resultStr = "";
    var geocode = data.geocodes;
    var myLng = geocode[0].location.getLng();
    var myLat = geocode[0].location.getLat();
    resultStr += "当前坐标</b>:" + myLng + ", " + myLat;
    $pointBox.innerHTML = resultStr;
    map.setCenter(new AMap.LngLat(myLng,myLat));
}

全部源代码:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>收货地址-点固定在中间</title>
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=0250860ccb5953fa5d655e8acf40ebb7&plugin=AMap.Geocoder"></script>
    <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
    <style>
        #addressBox{height:20px;width:600px;}
        #mapBox{height:400px;width:600px;position:absolute;}
        #pointBox{height:20px;width:600px;}
        #img_point{position:absolute;top:200px;left:300px;z-index:9999999;}
    </style>
<body>
<div>
    <input id="addressBox" type="text" value="请输入结构化地址,例如北京市朝阳区望京街道首开广场" />
    <input id="" type="button" onclick="geocoder();" value="搜索" />
</div>
<img id="img_point" src="marker64.png" />
<div id=‘pointBox‘>&nbsp;</div>
<div id=‘mapBox‘></div>
<div>
使用方法:<br />
1.输入地址,点击搜索<br />
2.如果不够准确,可以拖动地图改变经纬度
</div>
<script type="text/javascript">
var $addressBox = document.getElementById(‘addressBox‘);
var $pointBox = document.getElementById("pointBox");

//创建地图
var map = new AMap.Map("mapBox", {
    resizeEnable: true,
    center: [116.397428, 39.90923],
    zoom:14
});

//打印当前经纬度
function addCenterPoint(){
    var centerPoint = map.getCenter();
    $pointBox.innerHTML = "当前经纬度为:" + centerPoint.getLng() + ‘,‘ + centerPoint.getLat();
}
addCenterPoint();

function geocoder() {
    var myGeo = new AMap.Geocoder();
    //地理编码,返回地理编码结果
    myGeo.getLocation($addressBox.value, function(status, result) {
        if (status === ‘complete‘ && result.info === ‘OK‘) {
            //地址解析成功
            geocoder_CallBack(result);
        }
        else{
            //地址解析失败
            $pointBox.innerHTML = "查无此地址";
        }
    });
}

//地理编码返回结果展示
function geocoder_CallBack(data) {
    var resultStr = "";
    var geocode = data.geocodes;
    var myLng = geocode[0].location.getLng();
    var myLat = geocode[0].location.getLat();
    resultStr += "当前坐标</b>:" + myLng + ", " + myLat;
    $pointBox.innerHTML = resultStr;
    map.setCenter(new AMap.LngLat(myLng,myLat));
}

//添加地图事件
map.on(‘moveend‘, function() {
    addCenterPoint();
});
</script>
</body>
</html>

示例:http://zhaoziang.com/amap/deliver_address_point.htm

时间: 2024-10-05 04:43:51

【地图API】收货地址详解2的相关文章

调用高德地图API(热力图)详解

具体脚本语言如下: <!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="initial-scale=1.0, user-scala

微信支付开发(7) 收货地址共享接口V2

在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现获取收货地址的功能. 收货地址共享接口 在2016年4月13日 进行过升级,2016年5月20日之后只能使用新接口,本教程为新版接口的教程! 本文分为以下二个部分: 生成JS-SDK权限验证签名 实现获取共享收货地址 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,详情见 微信公众平台开发(26) ACCESS TOKEN 2. 获取jsapi_ticket 生成签名之前必须先了解一

微信支付v3开发(6) 收货地址共享接口

请看新版教程  微信支付开发(7) 收货地址共享接口V2 本文介绍微信支付下的收货地址共享接口的开发过程. 一. 简单介绍 微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,兴许能够免填写支持高速选择.也可添加和编辑. 此地址为用户属性.可在各商户的网页中共享使用.支持原生控件填写地址.地址数据会传递到商户. 地址共享是基于微信JavaScript API 实现.仅仅能在微信内置浏览器中使用,其它浏览器调用无效. 同一时候,须要微信5.0 版本号才干支持,建议通过user agen

微信支付开发(6) 收货地址共享接口

关键字:微信支付 收货地址共享作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/weixin-editAddress.html 本文介绍微信支付下的收货地址共享接口的开发过程. 一. 简介 微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,后续可以免填写支持快速选择,也可增加和编辑.此地址为用户属性,可在各商户的网页中共享使用.支持原生控件填写地址,地址数据会传递到商户. 地址共享是基于微信JavaScript API 实现,只能在微信内置浏

微信收货地址共享开发接口讲解

写在前面的话:微信开发者文档写的比较清楚,也不容易出错,可是偏偏收货地址共享那儿写的比较绕,同时也会有很多坑,这里总结一下. ======正文开始====== 微信收货地址共享开发接口基本使用场景是: 用户点击按钮----->弹出微信收货地址选择页面---->用户选择收货地址,点击确定后,用户能够获取用户收货地址信息. 1.增加页面按钮标签: <div id="select-address">选择收货地址</div> 2.引用相关javascript

微信支付开发(6) 收货地址共享接口 【转发收藏】

作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/weixin-editAddress.html 本文介绍微信支付下的收货地址共享接口的开发过程. 一. 简介 微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,后续可以免填写支持快速选择,也可增加和编辑.此地址为用户属性,可在各商户的网页中共享使用.支持原生控件填写地址,地址数据会传递到商户. 地址共享是基于微信JavaScript API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效

微信收货地址开发分享

微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题.虽然坑很多,但是还是把问题解决了. 微信支付的收货地址共享功能,主要是统一的管理微信用户个人的收货地址,其收货地址可以被应用于所有可以调用的开发者.用户的收货地址包含了很多个人信息,因此该接口必须要通过申请,申请的方式可以在mp平台上查看到. 申请开通 包含微信支付功能时,则需要配置微信的支付目录(支付目录为绝对路径,例如支付接口为wxpay.php,而该文件在wxpay目录下,那么支付目

(转)微信收货地址开发分享

微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题.虽然坑很多,但是还是把问题解决了. 微信支付的收货地址共享功能,主要是统一的管理微信用户个人的收货地址,其收货地址可以被应用于所有可以调用的开发者.用户的收货地址包含了很多个人信息,因此该接口必须要通过申请,申请的方式可以在mp平台上查看到. 申请开通 包含微信支付功能时,则需要配置微信的支付目录(支付目录为绝对路径,例如支付接口为wxpay.php,而该文件在wxpay目录下,那么支付目

【小程序】获取微信 自带的 收货地址获取和整理

1.wx.chooseAddress(OBJECT) if(wx.chooseAddress){ wx.chooseAddress({ success: function (res) { console.log(JSON.stringify(res)) }, fail: function(err){ console.log(JSON.stringify(err)) } }) }else{ console.log('当前微信版本不支持chooseAddress'); } 2.数据处理,仅供参考 /