【雲圖】如何製作附近實體店的地圖?-微信微博支付寶

酸奶小妹發表於2014-06-18

摘要:

附近連鎖店地圖與全國連鎖店地圖,最大的區別就是:

1、附近連鎖店地圖需要先定位,然後搜尋附近的店鋪。

2、全國連鎖店地圖,是先選擇城市,然後檢索某城市內的全部門店資訊。

本文就詳細講解了如何製作附近實體店的地圖,並調起高德地圖進行導航,調起打電話功能。

本文還詳細講解了如何設定支付寶服務、微信公眾號、微博官方賬號的地圖功能。

------------------------------------------------------------------------

 

一、支付寶設定

登入支付寶服務窗:https://fuwu.alipay.com/platform/queryMenu.htm

自定義選單 -> 主選單 -> 有子級選單

填寫子選單名稱,設定為跳轉網頁,並且放入網址。比如菜鳥物流:http://zhaoziang.com/amap/cainiao.html

最後點選發布。

 

二、微信設定

登入微信公眾平臺:https://mp.weixin.qq.com

功能->高階功能->編輯模式->自定義選單-> 選單管理->新增->設定動作

設定為跳轉網頁,並且放入網址。比如菜鳥物流:http://zhaoziang.com/amap/cainiao.html

最後點儲存。

 

三、微博設定

登入微博:http://weibo.com/

管理中心->粉絲服務->高階功能->編輯模式->自定義選單-> 選單管理->新增->設定動作

設定為跳轉網頁,並且放入網址。比如菜鳥物流:http://zhaoziang.com/amap/cainiao.html

最後點儲存。

 

四、雲圖設定

登入雲圖管理臺:http://yuntu.amap.com/datamanager/index.html

新建地圖

匯入CSV資料。(支援UTF8和GBK 編碼,資料不超過10,000 條)

 

五、程式碼與獲取網址

將以下程式碼複製下來,替換key、tableID、圖示,然後生成自己的網址。

獲取key的地址:http://api.amap.com/key

獲取tableID的地址:

進入你的雲圖->獲取tableID

 

全部原始碼:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>雲圖私人定製</title>
<style>
/** reset **/
body,html,div,p,li,ul,ol,p,select,h3{padding:0;margin:0;}
body,html{width:100%;height:100%;}
img{border:none;}
a{text-decoration:none;}
a:hover{color:#FF7F27;}
body{color:#333;font-family:"Microsoft YaHei";text-align:center;font-size:14px;}
img:hover{filter:alpha(opacity=90);-moz-opacity:0.9;-khtml-opacity: 0.9;opacity: 0.9;}
ul,li{list-style:none;}
/** clearfix **/
.clearfix{display:block;zoom:1;}
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
/** weixin **/
.header{width:100%;height:40px;line-height:40px;background:#b3ffd7;float:left;}
.header a{width:49%;height:100%;float:left;font-size:16px;}
#map,#list{height:90%;width:100%;}
#list{text-align:left;}
.item{border-bottom:1px dashed #ccc;padding:10px;}
</style>
<script language="javascript" src="http://webapi.amap.com/maps?v=1.3&key={$key}"></script>
</head>
<body onLoad="">
    <div class="header clearfix">
        <a id="iListBtn" onclick="display('list','iMapBtn');" href="javascript:void(0);">列表模式</a>
        <a id="iMapBtn" onclick="display('map','iListBtn');" href="javascript:void(0);">地圖模式</a>
    </div>
    <div id="map" class="clearfix"></div>
    <div id="list" style="display:none;">正在讀取資料……</div>
</body>
<script language="javascript">
mapInit();
function display(id1,id2){
    document.getElementById('map').style.display = 'none';
    document.getElementById('list').style.display = 'none';
    document.getElementById(id1).style.display = 'block';
    document.getElementById(id2).style.display = 'block';
    if (id1 === 'map' && mapObj) {
        mapObj.setFitView();
    }
}
var mapObj;
var cloudDataLayer;
var cloudSearch;
var cpoint;
//初始化地圖物件,載入地圖
function mapInit(){
    mapObj = new AMap.Map("map");
    mapObj.plugin('AMap.Geolocation', function () {
        geolocation = new AMap.Geolocation({
            enableHighAccuracy: true,//是否使用高精度定位,預設:true
            timeout: 10000,          //超過10秒後停止定位,預設:無窮大
            maximumAge: 0,           //定位結果快取0毫秒,預設:0
            convert: true,           //自動偏移座標,偏移後的座標為高德座標,預設:true
            showButton: true,        //顯示定位按鈕,預設:true
            buttonPosition: 'LB',    //定位按鈕停靠位置,預設:'LB',左下角
            buttonOffset: new AMap.Pixel(10, 20),//定位按鈕與設定的停靠位置的偏移量,預設:Pixel(10, 20)
            showMarker: true,        //定位成功後在定位到的位置顯示點標記,預設:true
            showCircle: false,        //定位成功後用圓圈表示定位精度範圍,預設:true
            panToLocation: true,     //定位成功後將定位到的位置作為地圖中心點,預設:true
            zoomToAccuracy:true      //定位成功後調整地圖視野範圍使定位位置及精度範圍視野內可見,預設:false
        });
        mapObj.addControl(geolocation);
        geolocation.getCurrentPosition();
        AMap.event.addListener(geolocation, 'complete', onComplete); //返回定位資訊-成功
        AMap.event.addListener(geolocation, 'error', function(){
            alert('請開啟定位功能,預設展示北京前20個.');
            cpoint = new AMap.LngLat(116.38298,39.955543);
            myCloudList(); 
        });    //返回定位資訊-失敗 
    });
}
function onComplete(data) {
    var lngX = data.position.getLng();
    var latY = data.position.getLat();
    cpoint = new AMap.LngLat(lngX,latY);
    myCloudList();  
}
//雲圖載入列表
function myCloudList(){
    //列表
    var search; 
    var searchOptions = {
            pageSize:20
        };
    mapObj.plugin(["AMap.CloudDataSearch"], function() {
        cloudSearch = new AMap.CloudDataSearch('{$tableID}', searchOptions); //構造雲資料檢索類
        AMap.event.addListener(cloudSearch, "complete", cloudSearch_CallBack); //查詢成功時的回撥函式
        AMap.event.addListener(cloudSearch, "error", errorInfo); //查詢失敗時的回撥函式
        cloudSearch.searchNearBy(cpoint, 10000); //周邊檢索 
    });
}
var markers = new Array(); 
var windowsArr = new Array();
//新增marker和infowindow     
function addmarker(i, d){  
    var lngX = d._location.getLng();  
    var latY = d._location.getLat();  
    var IconOptions = {
        image : "{$icon}",
        size : new AMap.Size(32,32),
        imageSize : new AMap.Size(32,32)
        //imageOffset : new AMap.Pixel(-16,0)
    };
    var myIcon = new AMap.Icon(IconOptions);
    var markerOption = {  
        map:mapObj,  
        icon: myIcon,   
        offset: new AMap.Pixel(-16,-32),   
        position:new AMap.LngLat(lngX, latY)    
    };              
    var mar = new AMap.Marker(markerOption);    
    markers.push(new AMap.LngLat(lngX, latY));  
  
    var infoWindow = new AMap.InfoWindow({  
        content: "<h3>" + d._name + "</h3>" + "<img style=\"width:280px;height:180px;overflow:hidden;\" src='" +d.pic + "' /><p>地址:" + d._address + "</p>" + "<p>電話:<a href=\"tel:" + d.telephone + "\">" + d.telephone + "</a></p><p style=\"text-align:right\"><a href='http://mo.amap.com/?q=" + d._location.getLat() + "," + d._location.getLng() + "&name=" + d._name + "'>到這兒去</a></p>",
        size:new AMap.Size(280, 0),  
        autoMove:true,  
        offset:new AMap.Pixel(0,-30),
        closeWhenClickMap: true        
    });    
    windowsArr.push(infoWindow);     
    var aa = function(){infoWindow.open(mapObj, mar.getPosition());};    
    AMap.event.addListener(mar, "click", aa);    
}
//回撥函式-成功
function cloudSearch_CallBack(data) {
    clearMap();
    var resultStr="";
    var resultArr = data.datas;
    var resultNum = resultArr.length;
    for (var i = 0; i < resultNum; i++) {
        resultStr += "<div class=\"item\">";
        resultStr += "<h3>" + (i+1) + "" + resultArr[i]._name + "</h3>";
        resultStr += "<p>地址:" + resultArr[i]._address + "</p>";
        resultStr += "<p>電話:<a href=\"tel:" + resultArr[i].telephone + "\">" + resultArr[i].telephone + "</a></p>";
        resultStr += "<p>地圖:<a href='http://mo.amap.com/?q=" + resultArr[i]._location.getLat() + "," + resultArr[i]._location.getLng() + "&name=" + resultArr[i]._name + "'>到這裡去</a></p>";
        resultStr += "</div>";
        addmarker(i, resultArr[i]); //新增大標註
    }
    if (document.getElementById('map').style.display !== 'none') {
        mapObj.setFitView();
    }
    document.getElementById("list").innerHTML = resultStr;
}
//回撥函式-失敗
function errorInfo(data) {
    resultStr = data.info;
    document.getElementById("list").innerHTML = resultStr;
}
//清空地圖
function clearMap(){
    mapObj.clearMap();
    document.getElementById("list").innerHTML = '正在讀取資料……';
}
</script>
</html>

 

demo網址(請用手機瀏覽器檢視):http://zhaoziang.com/amap/cainiao.html

 

效果圖:

 

六、其他雲圖教程

【支付寶中的全國家樂福地圖】http://www.cnblogs.com/milkmap/p/3786144.html

【微信中的全國AMF海水農場地圖】http://www.cnblogs.com/milkmap/p/3780417.html

【官網中的全國AMF海水農場地圖】http://www.cnblogs.com/milkmap/p/3778398.html

【應用中webview形式的全國KTV地圖】http://www.cnblogs.com/milkmap/p/3765925.html

 

【三甲醫院】http://www.cnblogs.com/milkmap/p/3637899.html

【東莞地圖】http://www.cnblogs.com/milkmap/p/3657829.html

【貪官落馬圖】http://www.cnblogs.com/milkmap/p/3678377.html

 

七、從零開始學高德JS API系列教程

【地圖展現】http://www.cnblogs.com/milkmap/p/3687855.html

【控制元件】http://www.cnblogs.com/milkmap/p/3707711.html

【覆蓋物】http://www.cnblogs.com/milkmap/p/3727842.html

【搜尋服務】http://www.cnblogs.com/milkmap/p/3745701.html

【路線規劃】http://www.cnblogs.com/milkmap/p/3755257.html

【座標轉換】http://www.cnblogs.com/milkmap/p/3768379.html

 

相關文章