【云图】如何制作官网上的实体店分布图?

原文:【云图】如何制作官网上的实体店分布图?

摘要:很多商家都有自己的实体店,包括KFC啊,麦当劳啊,姐最爱的眉州小吃啊。那么,商家就会有这样一个需求:把实体店地址标注在地图上,并引导客户驾车或者坐公交去到指定地地址。可是商家一般都不会地图开发,这可怎么办呢?不用担心,我把代码都给大家写好了,鼠标点一点,实体店地图立马呈现!本文以姐最爱的AMF海水农场实体店为例,告诉大家如何在自己的网站上嵌入一个【全国实体店查询地图】。

AMF官网:http://www.amfaqua.com/pinpailingshoudian/pinpailingshoudian_map.html

效果图:

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

一、数据准备

从官网获取地址数据:http://www.amfaqua.com/

粘贴到excel里,并保存为csv文件。

name,address,tel,pic
河南鹤壁旗舰店,河南省鹤壁市淇滨区鹤煤大道西段建业森林半岛,18810067778,
苏州邻瑞店,江苏省苏州市工业园区邻瑞广场三层,18505121300,http://www.amfaqua.com/uploads/allimg/131230/1-131230152K1504.jpg
临汾鼓楼店,山西省临汾市尧都区鼓楼广场步行街,15388570002,http://www.amfaqua.com/uploads/allimg/130904/1-130Z4002334543.jpg
北京三里屯店,北京朝阳区三里屯SOHO三号楼3115,13146542304,http://www.amfaqua.com/uploads/allimg/130916/1-1309161J929643.jpg
北京朝园店,北京朝阳公园西2门朝园市场1165号,010-57900212,http://www.amfaqua.com/uploads/allimg/130826/1-130R6144K0c8.jpg
北京和平里店,北京东城区和平里中街六区6号楼底商-3,010-84211868,http://www.amfaqua.com/uploads/allimg/130626/1-1306261A359553.jpg
北京方恒店,北京市朝阳区望京方恒购物中心一层入口,010-57116389,http://www.amfaqua.com/uploads/allimg/131008/1-13100QI236409.jpg
北京富力城店,北京朝阳区东三环富力广场购物中心地下一层,13601233181,http://www.amfaqua.com/uploads/allimg/140217/1-14021F93U0254.jpg
北京蓝港店,北京市朝阳区蓝色港湾国际商区L-K161(M层),13264336352|18600937784,http://www.amfaqua.com/uploads/allimg/130826/1-130R6134555105.jpg
北京居然店,北京市海淀区西四环世纪金源北楼居然之家一层,13910152440,http://www.amfaqua.com/uploads/allimg/130829/1-130R9162P02T.jpg
北京蓝景店,北京市海淀区北三环蓝景丽家一层入口,13910152440,http://www.amfaqua.com/uploads/allimg/130829/1-130R9162U4395.jpg
北京欧美汇店,北京海淀区中关村欧美汇购物中心一层,010-56420518,http://www.amfaqua.com/uploads/130410/1-1304101RTa34.jpg
天津绿游店,天津市滨海新区泰达绿游天地购物中心215号,13752669203,http://www.amfaqua.com/uploads/allimg/130626/1-1306261F2424P.jpg
北京朝阳大悦城店,北京朝阳区青年路大悦城购物中心三层必胜客对面,010-57187606,http://www.amfaqua.com/uploads/allimg/140217/1-14021GA534M0.jpg
南通中南城店,江苏省南通市崇川区中南城购物中心4层,13255247999,http://www.amfaqua.com/uploads/allimg/130626/1-1306261H215P1.jpg

 

打开云图,http://yuntu.amap.com/datamanager/

新建地图,导入数据,点击预览。

 

这时云图已经生成了,查看效果:http://yuntu.amap.com/share/iuQzi2

如图:

 

 

二、地图展示

获取一个开发者key:http://developer.amap.com/key/

 

在你的地图代码中引用高德JS:

<script language="javascript" src="http://webapi.amap.com/maps?v=1.2&key=【您的key】"></script>

 

给出一个地图容器:

<div id="map"></div>

 

加载您的地图:

var mapObj;var pBeijing = new AMap.LngLat(116.38298,39.955543);
//初始化地图对象,加载地图
function mapInit(){
    mapObj = new AMap.Map("map",{
    resizeEnable: true,
    center: pBeijing, //地图中心点
    level:12  //地图显示的比例尺级别
    });
    myCloudList("北京");
}

 

加载列表:

//云图加载列表
function myCloudList(id){
    //列表
    mapObj.plugin(["AMap.CloudDataSearch"], function() {
        //绘制多边形
        var arr = new Array();
        arr.push(new AMap.LngLat(75.585938,52.696361));
        arr.push(new AMap.LngLat(134.472656,53.956086));
        arr.push(new AMap.LngLat(129.726563,16.467695));
        arr.push(new AMap.LngLat(81.914063,20.13847));
        arr.push(new AMap.LngLat(75.585938,52.696361));
        var searchOptions = {
            keywords: id,
            pageSize:100
        };
        cloudSearch = new AMap.CloudDataSearch('53956704e4b04192f1f4e43d', searchOptions); //构造云数据检索类
        AMap.event.addListener(cloudSearch, "complete", cloudSearch_CallBack); //查询成功时的回调函数
        AMap.event.addListener(cloudSearch, "error", errorInfo); //查询失败时的回调函数
        cloudSearch.searchInPolygon(arr); //多边形检索
    });
}
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 : "fish.png",
        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.tel + "\">" + d.tel + "</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].tel + "\">" + resultArr[i].tel + "</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 = '正在读取数据……';
}

 

三、城市切换

代码:

//索引云图
function getType(iPrivance){
    if(iPrivance=="全国"){
        if (document.getElementById('map').style.display !== 'none') {
            mapObj.setZoomAndCenter(4,new AMap.LngLat(114.433594,33.651208));
        }
        myCloudList('');
        var op={
            query:{keywords:""}
        };
        cloudDataLayer.setOptions(op);
    }else{
        myCloudList(iPrivance);
        var op={
            query:{keywords:iPrivance}
        };
        cloudDataLayer.setOptions(op);
        placeSearch(iPrivance);
    }
}
//城市查询
function placeSearch(id) {
    var MSearch;
    mapObj.plugin(["AMap.PlaceSearch"], function() {
        MSearch = new AMap.PlaceSearch({ //构造地点查询类
            pageSize:1,
            pageIndex:1,
            city:"" //城市
        });
        AMap.event.addListener(MSearch, "complete", keywordSearch_CallBack);//返回地点查询结果
        MSearch.search(id); //关键字查询
    });
}
//城市查询后定位
function keywordSearch_CallBack(data) {
    var iPoint = data.poiList.pois[0].location;
    mapObj.setZoomAndCenter(10,iPoint);
}

 

四、驾车查询

驾车公交等路线规划,我们放到高德mobile地图来做。

只需要一句话,即可连接到高德mobile地图,来看一个例子:

http://mo.amap.com/?q=31.234527,121.287689&name=海水农场和平里店

 

来看看类参考:

 

所以,我们只需要设置一下中心点的经纬度,还有一个显示的名称即可。

经纬度的获取在云图检索的回调函数里获得。

resultArr[i]._location.getLat() resultArr[i]._location.getLng() 

 

 

五、效果图与源代码

 

全部源代码:

<!DOCTYPE html>
<html xmlns="http://ww.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="http://www.amfaqua.com/templets/myskin/css/style.css" rel="stylesheet" type="text/css" />
<title>Asian Marine Fantastic</title>
<script language="javascript" src="http://webapi.amap.com/maps?v=1.2&key=【您的key】"></script>
<link href="amf_map.css" rel="stylesheet" type="text/css" />
<script language="javascript">
function display(id1,id2){
    document.getElementById('map').style.display = 'none';
    document.getElementById('list').style.display = 'none';
    document.getElementById(id1).style.display = 'block';
    if (id1 === 'map' && mapObj) {
        mapObj.setFitView();
    }
}
var mapObj;
var cloudDataLayer;
var cloudSearch;
var pBeijing = new AMap.LngLat(116.38298,39.955543);
//初始化地图对象,加载地图
function mapInit(){
    mapObj = new AMap.Map("map",{
    resizeEnable: true,
    center: pBeijing, //地图中心点
    level:12  //地图显示的比例尺级别
    });
    myCloudList("北京");
}
//云图加载列表
function myCloudList(id){
    //列表
    mapObj.plugin(["AMap.CloudDataSearch"], function() {
        //绘制多边形
        var arr = new Array();
        arr.push(new AMap.LngLat(75.585938,52.696361));
        arr.push(new AMap.LngLat(134.472656,53.956086));
        arr.push(new AMap.LngLat(129.726563,16.467695));
        arr.push(new AMap.LngLat(81.914063,20.13847));
        arr.push(new AMap.LngLat(75.585938,52.696361));
        var searchOptions = {
            keywords: id,
            pageSize:100
        };
        cloudSearch = new AMap.CloudDataSearch('53956704e4b04192f1f4e43d', searchOptions); //构造云数据检索类
        AMap.event.addListener(cloudSearch, "complete", cloudSearch_CallBack); //查询成功时的回调函数
        AMap.event.addListener(cloudSearch, "error", errorInfo); //查询失败时的回调函数
        cloudSearch.searchInPolygon(arr); //多边形检索
    });
}
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 : "fish.png",
        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.tel + "\">" + d.tel + "</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].tel + "\">" + resultArr[i].tel + "</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 = '正在读取数据……';
}
//索引云图
function getType(iPrivance){
    if(iPrivance=="全国"){
        if (document.getElementById('map').style.display !== 'none') {
            mapObj.setZoomAndCenter(4,new AMap.LngLat(114.433594,33.651208));
        }
        myCloudList('');
        var op={
            query:{keywords:""}
        };
        cloudDataLayer.setOptions(op);
    }else{
        myCloudList(iPrivance);
        var op={
            query:{keywords:iPrivance}
        };
        cloudDataLayer.setOptions(op);
        placeSearch(iPrivance);
    }
}
//城市查询
function placeSearch(id) {
    var MSearch;
    mapObj.plugin(["AMap.PlaceSearch"], function() {
        MSearch = new AMap.PlaceSearch({ //构造地点查询类
            pageSize:1,
            pageIndex:1,
            city:"" //城市
        });
        AMap.event.addListener(MSearch, "complete", keywordSearch_CallBack);//返回地点查询结果
        MSearch.search(id); //关键字查询
    });
}
//城市查询后定位
function keywordSearch_CallBack(data) {
    var iPoint = data.poiList.pois[0].location;
    mapObj.setZoomAndCenter(10,iPoint);
}
</script>
</head>
<body onLoad="mapInit()">
<!-- Copyright � 2005. Spidersoft Ltd -->
<style>
A.applink:hover {border: 2px dotted #DCE6F4;padding:2px;background-color:#ffff00;color:green;text-decoration:none}
A.applink       {border: 2px dotted #DCE6F4;padding:2px;color:#2F5BFF;background:transparent;text-decoration:none}
A.info          {color:#2F5BFF;background:transparent;text-decoration:none}
A.info:hover    {color:green;background:transparent;text-decoration:underline}
</style>
<div id="page" class="shell">
<!-- Logo + Search + Navigation -->
<DIV id=top>
<DIV class=cl></DIV>
<H1 id=logo><A href="http://www.amfaqua.com/">AMF</A></H1>
<DIV class=slogan>保护海洋生态<BR>
选择AMF人工观赏鱼和珊瑚</DIV>
<DIV class=contact><img src="http://www.amfaqua.com/templets/myskin/images/tel.jpg" /></DIV>
<DIV class=cl></DIV>
<DIV id=navigation>
<UL>
    <LI><A href="#"><SPAN>首 页</SPAN></A> </LI>
    <li class=""><a href="#" title="海洋生态缸"><span>海洋生态缸</span></a></li>
    <li class=""><a href="#" title="人工海水鱼"><span>人工海水鱼</span></a></li>
    <li class=""><a href="#" title="珊瑚和海藻"><span>珊瑚和海藻</span></a></li>
    <li><a href="#" title="饲料与器材"><span>饲料与器材</span></a></li>
    <li><a href="#" title="品牌专卖店"><span>品牌专卖店</span></a></li>
    <li><a href="#" title="合作加盟"><span>合作加盟</span></a></li>
    <li><a href="#" title="企业发展"><span>企业发展</span></a></li>
    <li><a href="#" title="维护视频"><span>维护视频</span></a></li>
</UL>
</DIV>
</DIV>
<DIV id=main>
<DIV class="cols two-cols">
<!--begin-->
    <div class="header clearfix">
        <select onchange="getType(this.options[this.selectedIndex].text)" >
            <option>北京</option>
            <option>天津市滨海新区</option>
            <option>河南省鹤壁市</option>
            <option>江苏省苏州市</option>
            <option>江苏省南通市</option>
            <option>山西省临汾市</option>
            <option>全国</option>
        </select>
        <div class="btnChange">
            <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>
    <div id="map" class="clearfix"></div>
    <div id="list" style="display:none;">正在读取数据……</div>
<!--end-->
</DIV>
</DIV>
<DIV id=footer>
<P class=right>2007-2013 AMF海水农场&nbsp;版权所有&nbsp;备案信息:京ICP备08001035号</P>
<P><A href="#">首 页</A> <SPAN>&nbsp;</SPAN><a href="../haishuishengtaigang/haishuishengtaigang.html" title="海洋生态缸">海洋生态缸</a><SPAN>&nbsp;</SPAN><a href="../rengonghaishuiyu/rengonghaishuiyu.html" title="人工海水鱼">人工海水鱼</a><SPAN>&nbsp;</SPAN><a href="../ruantihehaizao/ruantihehaizao.html" title="珊瑚和海藻">珊瑚和海藻</a><SPAN>&nbsp;</SPAN><a href="../shuizuqicai/shuizuqicai.html" title="饲料与器材">饲料与器材</a><SPAN>&nbsp;</SPAN><a href="pinpailingshoudian.html" title="品牌专卖店">品牌专卖店</a><SPAN>&nbsp;</SPAN><a href="../lianxihehezuo/lianxihehezuo.html" title="合作加盟">合作加盟</a><SPAN>&nbsp;</SPAN><a href="../fazhandongtai/fazhandongtai.html" title="企业发展">企业发展</a>
<DIV class=cl></DIV>
</DIV>
</div>
</body>
</html>

 

demo地址:

http://zhaoziang.com/amap/amf_map.html

时间: 2024-09-27 12:00:35

【云图】如何制作官网上的实体店分布图?的相关文章

zepto.js 中报错,其中链接的zepto模块有官网上的模块,并添加了touch、动画这几个但

问题描述 zepto.js 中报错,其中链接的zepto模块有官网上的模块,并添加了touch.动画这几个但 <!DOCTYPE html><html><head> <meta charset=""UTF-8""> <meta name=""viewport"" content=""width=device-width initial-scale=1.0

zeromq pub sub-zeromq官网上的guide里,last value cache的应用场景是什么?

问题描述 zeromq官网上的guide里,last value cache的应用场景是什么? 求讲解zeromq里 高级pub-sub模式中的last value cache. guide里这一部分优点糊涂,没看明白. 如果能给个C++的示例代码更好了. 多谢

环信的sdk在cocoapods上的更新速度和在官网上的是否是一致...

问题描述 环信的sdk在cocoapods上的更新速度和在官网上的是否是一致的? 解决方案 同步更新的解决方案二:谢谢楼主~~~~~~~

github安装失败,安装地址就官网上的那个

问题描述 github安装失败,安装地址就官网上的那个 解决方案 解决方案二: 文件下载不成功,看看是不是网络被和谐了,建议开vpn

合生元官网上的这句广告语让人记忆犹新

"宝宝少生病,妈咪少担心."合生元官网上的这句广告语让人记忆犹新.然而,连日以来,记者调查发现,合生元这一中国益生菌儿童冲剂生产者,其核心产品--合生元益生菌冲剂(儿童型)批准功效是"免疫调节",却宣称可以预防常见肠道疾病.帮助消化.增进食欲,涉嫌欺骗.误导消费者.事实上,不仅核心产品存在虚假宣传,以"法国合生元"身份进入消费者视线的合生元,其身份也倍受质疑.日前,合生元总裁罗飞不得不承认,这些来自法国的奶粉只在中国销售,合生元"假洋鬼

在spring官网上下载spring,每个文件代表什么意思呢?

问题描述 在spring官网上下载spring,每个文件代表什么意思呢? 解决方案 .zip就是spring的压缩包,.zip.asc是对应压缩包的数字签名. 其余的就是各种版本了. 解决方案二: 1楼正解,但我想你可能不知道要使用哪些包,如果不是很明白需要哪个包的话,可以使用maven 解决方案三: 我觉得楼主很明显是想问应该下载哪个文件,这个看你的需求啦,不同包对应不同的开发需求 解决方案四: 嗯,我怎么感觉楼主的提问有些不正确呢?每一个文件代表一个压缩包啊?你需要那个文件就可以去下载相关的

CMSTOP官网上线 特色功能始现

中介交易 SEO诊断 淘宝客 云主机 技术大厅 用"千呼万唤始出来,犹抱琵琶半遮面"来形容CMSTOP一点也不过分,这套被赋予太多期待的CMS产品终于在今日(9月10日)上午11时20分开放,也正式揭开了笼罩在CMSTOP面纱下的特性与功能. CMSTOP从产品研发确定以来,频频出手,其创始人淡淡风(钟胜辉)从KU6离职后再度投身CMS领域创业也引发了动易创始人WebBoy对此的关注,并撰写了CMS围城论系列文章. 顶部Logo彰显其标准化的雄心 本次放出的官方网站仅仅有简单的首页与企

新款Chromebook 13在东芝的澳大利亚官网上首度亮相

摘要: 在今年早些时候, 东芝 凭借Chromebook 13宣布进军Chrome OS市场.而在最近,配置升级的新款Chromebook 13又在东芝的澳大利亚官网上首度亮相. 从配置单上看,新版Chromebook 13最大的提升要属 在今年早些时候, 东芝 凭借Chromebook 13宣布进军Chrome OS市场.而在最近,配置升级的新款Chromebook 13又在东芝的澳大利亚官网上首度亮相. 从配置单上看,新版Chromebook 13最大的提升要属2.16GHz英特尔Bay T

为什么 eclipse 里面打开的函数 解析 跟官网上找到的解析不一样呢

问题描述 为什么 eclipse 里面打开的函数 解析 跟官网上找到的解析不一样呢 rt: 望各位大神 解释一下 这个问题 有点坑 我找到的 函数 跟同事找到的函数解析不一样 老板问的时候 悲剧了 可是我也是看的 源码呀