【云图】如何制作全国KTV查询系统?

摘要:本文以【唱吧】531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示。最后,调起高德mobile地图来进行路线规划和周边查询。

本案例可以应用在微信开发平台,支付宝公众服务上,适合餐饮商家,汽车4S店,银行,停车场等业务。

由于使用高德云图+URI API的方式实现,开发者无需进行繁琐的数据库操作,即可实现自有数据的存储与检索。

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

一、数据准备

从唱吧531麦霸节官网获得数据:http://changba.com/yunying/ktvStaticList.php

拷贝到excel,另存为CSV格式,并改成UTF-8或者GBK编码。

二、导入数据

登录云图:http://yuntu.amap.com/datamanager/index.html

点击新建地图:

导入刚才的数据:

点击预览:

出现全国KTV分布图:

三、UE设计图

1、对于KTV的展示,有列表模式和地图模式2种。

2、按照城市检索并展示KTV数据。

3、点击某个KTV,跳转到高德mobile地图,进行路线规划。

四、云图展示全国KTV

采用云图层的方法,将麻点图展示出来。

//地图-云图层
    mapObj.plugin(‘AMap.CloudDataLayer‘, function () {
        var layerOptions = {
            query:{keywords: ‘‘},
            clickable:true
        };
        cloudDataLayer = new AMap.CloudDataLayer(‘538d71fee4b04192f1f4de77‘, layerOptions); //实例化云图层类
        cloudDataLayer.setMap(mapObj); //叠加云图层到地图
    });

示例图:

五、列表展示北京市KTV

用云检索,检索出北京市的KTV。

    //列表
    mapObj.plugin(["AMap.CloudDataSearch"], function() {       var searchOptions = {
            keywords:‘‘,
            orderBy:‘_id:ASC‘
        };
        cloudSearch = new AMap.CloudDataSearch(‘538d71fee4b04192f1f4de77‘, searchOptions); //构造云数据检索类
        AMap.event.addListener(cloudSearch, "complete", cloudSearch_CallBack); //查询成功时的回调函数
        AMap.event.addListener(cloudSearch, "error", errorInfo); //查询失败时的回调函数
        cloudSearch.searchNearBy(iPoint, 30000); //周边检索
    });  

示例图:

六、采用URI API链接到高德mobile地图

在点击列表,和点击麻点图的时候,采取URI API的方式调取地图。

这样我们只需要知道一个经纬度,就可以调取地图。

示例:

http://mo.amap.com/?q=31.234527,121.287689&name=名字

列表调取mo的代码:

//回调函数-成功
function cloudSearch_CallBack(data) {
    var resultStr="";
    var resultArr = data.datas;
    var resultNum = resultArr.length;
    for (var i = 0; i < resultNum; i++) {
        resultStr += "<div class=\"item\">";
        resultStr += "<a href=‘http://mo.amap.com/?q=" + resultArr[i]._location.getLat() + "," + resultArr[i]._location.getLng() + "&name=" + resultArr[i]._name + "‘><h3>" + (i+1) + "、" + resultArr[i]._name + "</h3></a>";
        resultStr += "<p>地址:" + resultArr[i]._address + "</p>";
        resultStr += "<p>电话:" + resultArr[i].tel + "</p>";
        resultStr += "</div>";
    }
    document.getElementById("list").innerHTML = resultStr;
}   

点击麻点图,出现信息窗口,调取高德mo:

AMap.event.addListener(cloudDataLayer, ‘click‘, function (result) {
            var clouddata = result.data;
            //云图麻点
            var infoWindow = new AMap.InfoWindow({
                content: "<a href=‘http://mo.amap.com/?q=" + clouddata._location.getLat() + "," + clouddata._location.getLng() + "&name=" + clouddata._name + "‘><h3>" + clouddata._name + "</h3></a>" + "<p>地址:" + clouddata._address + "</p>" + "<p>电话:" + clouddata.tel + "</p>",
                size:new AMap.Size(300, 0),
                autoMove:true,
                offset:new AMap.Pixel(0,-5)
            });
            infoWindow.open(mapObj, clouddata._location);
        });

高德mo示意图:

七、城市切换

城市切换的时候,云图层展示,和云检索list要分开写。

//索引云图
function getType(iPrivance){
    if(iPrivance=="全国"){
        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);
}

八、全部源代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>云图+mo</title>
<link rel="stylesheet" type="text/css" href="yuntumo.css" />
<script language="javascript" src="http://webapi.amap.com/maps?v=1.2&key=【您的key】"></script>
</head>
<body onLoad="mapInit()">
    <div id="lnglats">&nbsp;</div>
    <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>
            <option>浙江省</option>
            <option>黑龙江省</option>
            <option>辽宁省</option>
            <option>吉林省</option>
            <option>河北省</option>
            <option>河南省</option>
            <option>山西省</option>
            <option>陕西省</option>
            <option>湖北省</option>
            <option>湖南省</option>
            <option>江苏省</option>
            <option>江西省</option>
            <option>四川省</option>
            <option>云南省</option>
            <option>内蒙古自治区</option>
            <option>全国</option>
        </select>
        <div class="btnChange">
            <a onclick="display(‘list‘);" href="javascript:void(0);">列表模式</a>
            <a onclick="display(‘map‘);" href="javascript:void(0);">地图模式</a>
        </div>
    </div>
    <div id="map"></div>
    <div id="list" style="display:none;">正在读取数据……</div>
<!-- tongji begin-->
<script type="text/javascript">
var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cscript src=‘" + _bdhmProtocol + "hm.baidu.com/h.js%3Faeff88f19045b513af7681b011cea3bd‘ type=‘text/javascript‘%3E%3C/script%3E"));
</script>
<!-- tongji end -->
</body>
<script language="javascript">
function display(id){
    document.getElementById(‘map‘).style.display = ‘none‘;
    document.getElementById(‘list‘).style.display = ‘none‘;
    document.getElementById(id).style.display = ‘block‘;
}
var mapObj;
var cloudDataLayer;
var cloudSearch;
var pBeijing = new AMap.LngLat(116.388474,39.934486);
//初始化地图对象,加载地图
function mapInit(){
    mapObj = new AMap.Map("map",{
    center: pBeijing, //地图中心点
    level:11  //地图显示的比例尺级别
    });
    myCloudMap();
    myCloudList("北京");
    AMap.event.addListener(mapObj,‘click‘,getLnglat); //点击事件
}
//云图加载地图
function myCloudMap(){
    //地图-云图层
    mapObj.plugin(‘AMap.CloudDataLayer‘, function () {
        var layerOptions = {
            query:{keywords: ‘北京‘},
            clickable:true
        };
        cloudDataLayer = new AMap.CloudDataLayer(‘538d71fee4b04192f1f4de77‘, layerOptions); //实例化云图层类
        cloudDataLayer.setMap(mapObj); //叠加云图层到地图

        AMap.event.addListener(cloudDataLayer, ‘click‘, function (result) {
            var clouddata = result.data;
            //云图麻点
            var infoWindow = new AMap.InfoWindow({
                content: "<a href=‘http://mo.amap.com/?q=" + clouddata._location.getLat() + "," + clouddata._location.getLng() + "&name=" + clouddata._name + "‘><h3>" + clouddata._name + "</h3></a>" + "<p>地址:" + clouddata._address + "</p>" + "<p>电话:" + clouddata.tel + "</p>",
                size:new AMap.Size(300, 0),
                autoMove:true,
                offset:new AMap.Pixel(0,-5)
            });
            infoWindow.open(mapObj, clouddata._location);
        });
    });
}
//云图加载列表
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(‘538d71fee4b04192f1f4de77‘, searchOptions); //构造云数据检索类
        AMap.event.addListener(cloudSearch, "complete", cloudSearch_CallBack); //查询成功时的回调函数
        AMap.event.addListener(cloudSearch, "error", errorInfo); //查询失败时的回调函数
        cloudSearch.searchInPolygon(arr); //多边形检索
    });
}
//回调函数-成功
function cloudSearch_CallBack(data) {
    var resultStr="";
    var resultArr = data.datas;
    var resultNum = resultArr.length;
    for (var i = 0; i < resultNum; i++) {
        resultStr += "<div class=\"item\">";
        resultStr += "<a href=‘http://mo.amap.com/?q=" + resultArr[i]._location.getLat() + "," + resultArr[i]._location.getLng() + "&name=" + resultArr[i]._name + "‘><h3>" + (i+1) + "、" + resultArr[i]._name + "</h3></a>";
        resultStr += "<p>地址:" + resultArr[i]._address + "</p>";
        resultStr += "<p>电话:" + resultArr[i].tel + "</p>";
        resultStr += "</div>";
    }
    document.getElementById("list").innerHTML = resultStr;
}
//回调函数-失败
function errorInfo(data) {
    resultStr = data.info;
    document.getElementById("list").innerHTML = resultStr;
}
//鼠标点击,获取经纬度坐标
function getLnglat(e){
    var x = e.lnglat.getLng();
    var y = e.lnglat.getLat();
    document.getElementById("lnglats").innerHTML = x + "," + y;
}
//清空地图
function clearMap(){
    mapObj.clearMap();
    document.getElementById("list").innerHTML = ‘正在读取数据……‘;
}
//索引云图
function getType(iPrivance){
    if(iPrivance=="全国"){
        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>
</html>

示例demo:http://zhaoziang.com/amap/yuntumo.html

【云图】如何制作全国KTV查询系统?,布布扣,bubuko.com

时间: 2024-12-28 18:00:11

【云图】如何制作全国KTV查询系统?的相关文章

【百度地图API】建立全国银行位置查询系统(一)——如何创建地图

原文:[百度地图API]建立全国银行位置查询系统(一)--如何创建地图 <摘要>你将在第一章中学会以下知识: 如何创建一个网页文件 怎样利用百度地图API建立一张2D地图,以及3D地图 如何添加对地图进行鼠标和键盘操作的功能 ------------------------------------------------------------------------------------------------------------------- 一.创建网页文件 粘贴以下代码至记事本中

【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?" 答案就是,利用百度地图上的数据. ---------------------------------------------------------------------------------------------- 我们不用花大把时间写代码去跑数据,只需要利用百度地图API提供的免费接口,就可以

【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件

原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨.鹰眼.比例尺.2D3D转换控件.版权控件. ----------------------------------------------------------------------------------------------------------------- 一.安装配置notepad++ 为什么

【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo,酒店logo等) 如何在标注上显示信息窗口,以及添加文字标签等其他覆盖物: 最后,介绍一个获取坐标的给力工具. ---------------------------------------------------------------------------------------------------

Python制作快递查询系统,来感受到了Python的强大!

导语 今天来做个简答的python案例,利用Python制作一个简单的快递查询系统. 让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: PyQt5模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 实现效果 原理简介 快递信息数据源: https://www.kuaidi100.com/ 爬取快递信息很简单,只需要根据快递单号获得其可能所属的快递公司,然后分别获取这些快递公司该快递单

VBA学习笔记之单元格查询系统制作

1 Sub 自己写查询系统() 2 end_num = Columns(1).Find("*", searchdirection:=xlPrevious).Row '动态找到A列的最后一个单元格 3 k = 1 4 m = 1 5 Range(Cells(3, "h"), Cells(999, "l")).Clear 6 For Each Rng In Range("a2:" & "a" &

KTV点歌系统

巴黎的雨季 博客园 首页 新随笔 联系 订阅 管理 随笔 - 57  文章 - 0  评论 - 37 KTV点歌系统 经过十多天的艰苦奋战,MyKTV点歌系统终于成型,从刚开始接到项目的茫然,到完成项目时的喜悦,整个过程的艰辛和付出只有自己知道.虽然这个项目还有许多需要完善的地方,譬如添加歌词信息,实现窗体的美化等,这些在后续时间里我再一一进行一个完善吧! 首先呢,我先将整个项目所能实现的功能做一个简单的介绍,KTV点歌系统包括了前台和后台两大部分,前台的功能就是能够根据客户的需求来实现点歌操作

开房记录查询系统

开房记录查询系统★★扣扣187.5969★★查全国开房记录,微信聊天记录,手机通话短信清单,全家户籍,身份证轨迹,手机定位,婚姻调查等 推乐趣 在数字世界中,只需点击一下即可获得王国的钥匙. 你知道鱼叉钓鱼是历史上最大的数据泄露背后的唯一秘密武器吗? 这是真的,因为雅虎的一个员工成为一个简单的网络钓鱼攻击的受害者,点击了一个错误的链接,让黑客在公司的内部网络立足. 您可能熟悉网络钓鱼攻击 - 企图窃取用户凭据或财务数据 - 而钓鱼网络钓鱼是一种有针对性的网络钓鱼形式,攻击者欺骗员工或供应商提供远

基于java最短路径算法公交查询系统的设计与实现

基于J2EE的公交查询系统的设计与实现 1引言 1.1 选题背景 20多年来,我国经济得到了持续.快速.稳定.健康地发展.经济的快速增长,带动了汽车工业的蓬勃发展,并使交通状况显著改善.据统计,中国公路通车总里程已达130余万公里,其中高速公路约1.5万公里.居民收入普遍提高,到2000年年底,人均GDP已超过800美元,沿海地区已达2000-3000美元.按国际发展惯例,当人均GDP超出1000美元,汽车消费市场就将进入快速增长期.我国城市人口约有2亿,略低于美国人口.东部沿海地区大部分居民已