地图查询

通过api实例了解一些接口功能。比如常用的动态查询信息加载,地图搜索查询地址。自动查询通过["AMap.Autocomplete"]插件实现,并监听一个回调函数autocomplete_CallBack,查询成功后,执行函数显示查询信息。

 1 //输入提示
 2 function autoSearch() {
 3     var keywords = document.getElementById("keyword").value;
 4     var auto;
 5     //加载输入提示插件
 6     mapObj.plugin(["AMap.Autocomplete"], function() {
 7         var autoOptions = {
 8             city: "" //城市,默认全国
 9         };
10         auto = new AMap.Autocomplete(autoOptions);
11         //查询成功时返回查询结果
12         if ( keywords.length > 0) {
13             AMap.event.addListener(auto,"complete",autocomplete_CallBack);
14             auto.search(keywords);
15         }
16         else {
17             document.getElementById("result1").style.display = "none";
18         }
19     });
20 } 

回调函数autocomplete_CallBack:

 1 //输出输入提示结果的回调函数
 2 function autocomplete_CallBack(data) {
 3     var resultStr = "";
 4     var tipArr = [];
 5     tipArr = data.tips;
 6     if (tipArr.length>0) {
 7         for (var i = 0; i < tipArr.length; i++) {
 8             resultStr += "<div id=‘divid" + (i + 1) + "‘ onmouseover=‘openMarkerTipById(" + (i + 1)
 9                         + ",this)‘ onclick=‘selectResult(" + i + ")‘ onmouseout=‘onmouseout_MarkerStyle(" + (i + 1)
10                         + ",this)‘ style=\"font-size: 13px;cursor:pointer;padding:5px 5px 5px 5px;\">" + tipArr[i].name + "<span style=‘color:#C1C1C1;‘>"+ tipArr[i].district + "</span></div>";
11         }
12     }
13     else  {
14         resultStr = " π__π 亲,人家找不到结果!<br />要不试试:<br />1.请确保所有字词拼写正确<br />2.尝试不同的关键字<br />3.尝试更宽泛的关键字";
15     }
16
17     document.getElementById("result1").innerHTML = resultStr;
18     document.getElementById("result1").style.display = "block";
19 } 

回调函数中,data的数据格式为:

其中tips节点展开格式为:adcode、district、name

函数调用tips数据tipArr = data.tips; tipArr[i].name等用于显示自动查询的结果。效果如图,在查询框中输入地址后,自动加载一系列相关地址:

让地图加载我们要查询的地理信息,通过["AMap.PlaceSearch"]插件实现,同样需要一个回调函数,在完成查询后执行图层的清除,重新加载,新图层和标记。绑定在按钮点击事件:

1 function search_place(){
2     var text = $(‘#keyword‘).val();
3      //根据选择的输入提示关键字查询
4     mapObj.plugin(["AMap.PlaceSearch"], function() {
5         var msearch = new AMap.PlaceSearch();  //构造地点查询类
6         AMap.event.addListener(msearch, "complete", placeSearch_CallBack); //查询成功时的回调函数
7         msearch.search(text);  //关键字查询查询
8     });
9 }

回调函数placeSearch_CallBack:

添加新标记addmarker(i, poiArr[i]); 其中poiArr[i]为pois里的object

 1 //输出关键字查询结果的回调函数
 2 function placeSearch_CallBack(data) {
 3     //清空地图上的InfoWindow和Marker
 4     windowsArr = [];
 5     marker     = [];
 6     mapObj.clearMap();
 7     var resultStr1 = "";
 8     var poiArr = data.poiList.pois;
 9     var resultCount = poiArr.length;
10     for (var i = 0; i < resultCount; i++) {
11         resultStr1 += "<div id=‘divid" + (i + 1) + "‘ onmouseover=‘openMarkerTipById1(" + i + ",this)‘ onmouseout=‘onmouseout_MarkerStyle(" + (i + 1) + ",this)‘ style=\"font-size: 12px;cursor:pointer;padding:0px 0 4px 2px; border-bottom:1px solid #C1FFC1;\"><table><tr><td><img src=\"http://webapi.amap.com/images/" + (i + 1) + ".png\"></td>" + "<td><h3><font color=\"#00a6ac\">名称: " + poiArr[i].name + "</font></h3>";
12             resultStr1 += TipContents(poiArr[i].type, poiArr[i].address, poiArr[i].tel) + "</td></tr></table></div>";
13             addmarker(i, poiArr[i]);
14     }
15     mapObj.setFitView();
16     document.getElementById("result").innerHTML = resultStr1;
17     document.getElementById("result").style.display = "block";
18 } 

其中data的格式为:

效果如图:

全部代码:

  1 <!DOCTYPE html>
  2 <html>
  3   <head>
  4     <title>Bootstrap 101 Template</title>
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <!-- Bootstrap -->
  7     <link rel="stylesheet" href="/css/bootstrap.min.css">
  8     <link rel="stylesheet" type="text/css" href="http://developer.amap.com/Public/css/demo.Default.css" />
  9     <script language="javascript" src="http://webapi.amap.com/maps?v=1.2&key=5c6f2fc9074238d31a5ec24d8c0146f2"></script>
 10
 11     <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
 12     <!-- WARNING: Respond.js doesn‘t work if you view the page via file:// -->
 13     <!--[if lt IE 9]>
 14         <script src="http://cdn.bootcss.com/html5shiv/3.7.0/html5shiv.min.js"></script>
 15         <script src="http://cdn.bootcss.com/respond.js/1.3.0/respond.min.js"></script>
 16     <![endif]-->
 17   </head>
 18   <body>
 19       <div class="container">
 20     <p class="text-muted">LBS</p>
 21   <div class="row">
 22
 23     <div class="col-lg-6">
 24       <div class="input-group">
 25         <input type="text" id="keyword" class="form-control">
 26         <span class="input-group-btn">
 27           <button class="btn btn-info" type="button" onclick="search_place();">LBSearch!</button>
 28         </span>
 29       </div><!-- /input-group -->
 30       <div id="result1" name="result1" style="overflow: auto; width: 95%; border: 1px solid gray;display: none;"></div>
 31     </div><!-- /.col-lg-6 -->
 32     </div>
 33     <div class="row">
 34       <div class="col-xs-12 col-sm-6 col-md-4 ">
 35         <p class="text-muted">查询结果:</p>
 36         <div id="result"></div>
 37      </div>
 38       <div class="col-sm-6 col-md-8 ">
 39         <div id="iCenter" ></div>
 40     </div>
 41 </div>
 42   </div><!-- /.row -->
 43
 44     <!-- jQuery (necessary for Bootstrap‘s JavaScript plugins) -->
 45     <script src="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
 46     <!-- Include all compiled plugins (below), or include individual files as needed -->
 47     <script src="/js/bootstrap.min.js"></script>
 48   </body>
 49 </html>
 50 <script>
 51 var mapObj;
 52 mapInit();
 53 //地图加载
 54 function mapInit() {
 55     var opt = {
 56         level: 13, //设置地图缩放级别
 57         center: new AMap.LngLat(121.455214,31.248771) //设置地图中心点
 58     }
 59     mapObj = new AMap.Map("iCenter", opt);
 60    //判断浏览器类型,加载函数
 61     if (navigator.userAgent.indexOf("MSIE") > 0) {
 62         document.getElementById("keyword").onpropertychange = autoSearch;
 63     }
 64     else {
 65         document.getElementById("keyword").oninput = autoSearch;
 66     }
 67 }
 68 //输入提示
 69 function autoSearch() {
 70     var keywords = $("#keyword").val();
 71     var auto;
 72     //加载输入提示插件
 73     mapObj.plugin(["AMap.Autocomplete"], function() {
 74         var autoOptions = {
 75             city: "" //城市,默认全国
 76         };
 77         auto = new AMap.Autocomplete(autoOptions);
 78         //查询成功时返回查询结果
 79         if ( keywords.length > 0) {
 80             AMap.event.addListener(auto,"complete",autocomplete_CallBack);
 81             auto.search(keywords);
 82         }
 83         else {
 84             document.getElementById("result1").style.display = "none";
 85         }
 86     });
 87 }
 88
 89 //输出输入提示结果的回调函数
 90 function autocomplete_CallBack(data) {
 91     var resultStr = "";
 92     var tipArr = [];
 93     tipArr = data.tips;
 94     if (tipArr.length>0) {
 95         for (var i = 0; i < tipArr.length; i++) {
 96             resultStr += "<div id=‘divid" + (i + 1) + "‘ onmouseover=‘openMarkerTipById(" + (i + 1)
 97                         + ",this)‘ onclick=‘selectResult(" + i + ")‘ onmouseout=‘onmouseout_MarkerStyle(" + (i + 1)
 98                         + ",this)‘ style=\"font-size: 13px;cursor:pointer;padding:5px 5px 5px 5px;\">" + tipArr[i].name + "<span style=‘color:#C1C1C1;‘>"+ tipArr[i].district + "</span></div>";
 99         }
100     }
101     else  {
102         resultStr = " π__π 亲,人家找不到结果!<br />要不试试:<br />1.请确保所有字词拼写正确<br />2.尝试不同的关键字<br />3.尝试更宽泛的关键字";
103     }
104
105     document.getElementById("result1").innerHTML = resultStr;
106     document.getElementById("result1").style.display = "block";
107 }
108
109 //输入提示框鼠标滑过时的样式
110 function openMarkerTipById(pointid, thiss) {  //根据id打开搜索结果点tip
111     thiss.style.background = ‘#CAE1FF‘;
112 }
113
114 //输入提示框鼠标移出时的样式
115 function onmouseout_MarkerStyle(pointid, thiss) {  //鼠标移开后点样式恢复
116     thiss.style.background = "";
117 }
118
119 //从输入提示框中选择关键字并查询
120 function selectResult(index) {
121     if (navigator.userAgent.indexOf("MSIE") > 0) {
122         document.getElementById("keyword").onpropertychange = null;
123         document.getElementById("keyword").onfocus = focus_callback;
124     }
125     //截取输入提示的关键字部分
126     var text = document.getElementById("divid" + (index + 1)).innerHTML.replace(/<[^>].*?>.*<\/[^>].*?>/g,"");;
127     document.getElementById("keyword").value = text;
128     document.getElementById("result1").style.display = "none";
129     // //根据选择的输入提示关键字查询
130     // mapObj.plugin(["AMap.PlaceSearch"], function() {
131     //     var msearch = new AMap.PlaceSearch();  //构造地点查询类
132     //     AMap.event.addListener(msearch, "complete", placeSearch_CallBack); //查询成功时的回调函数
133     //     msearch.search(text);  //关键字查询查询
134     // });
135
136 }
137
138 function search_place(){
139     var text = $(‘#keyword‘).val();
140      //根据选择的输入提示关键字查询
141     mapObj.plugin(["AMap.PlaceSearch"], function() {
142         var msearch = new AMap.PlaceSearch();  //构造地点查询类
143         AMap.event.addListener(msearch, "complete", placeSearch_CallBack); //查询成功时的回调函数
144         msearch.search(text);  //关键字查询查询
145     });
146 }
147
148 //定位选择输入提示关键字
149 function focus_callback() {
150     if (navigator.userAgent.indexOf("MSIE") > 0) {
151         document.getElementById("keyword").onpropertychange = autoSearch;
152    }
153 }
154
155 //输出关键字查询结果的回调函数
156 function placeSearch_CallBack(data) {
157     //清空地图上的InfoWindow和Marker
158     windowsArr = [];
159     marker     = [];
160     mapObj.clearMap();
161     var resultStr1 = "";
162     var poiArr = data.poiList.pois;
163     var resultCount = poiArr.length;
164     for (var i = 0; i < resultCount; i++) {
165         resultStr1 += "<div id=‘divid" + (i + 1) + "‘ onmouseover=‘openMarkerTipById1(" + i + ",this)‘ onmouseout=‘onmouseout_MarkerStyle(" + (i + 1) + ",this)‘ style=\"font-size: 12px;cursor:pointer;padding:0px 0 4px 2px; border-bottom:1px solid #C1FFC1;\"><table><tr><td><img src=\"http://webapi.amap.com/images/" + (i + 1) + ".png\"></td>" + "<td><h3><font color=\"#00a6ac\">名称: " + poiArr[i].name + "</font></h3>";
166             resultStr1 += TipContents(poiArr[i].type, poiArr[i].address, poiArr[i].tel) + "</td></tr></table></div>";
167             addmarker(i, poiArr[i]);
168     }
169     mapObj.setFitView();
170     document.getElementById("result").innerHTML = resultStr1;
171     document.getElementById("result").style.display = "block";
172 }
173
174 //鼠标滑过查询结果改变背景样式,根据id打开信息窗体
175 function openMarkerTipById1(pointid, thiss) {
176     thiss.style.background = ‘#CAE1FF‘;
177     windowsArr[pointid].open(mapObj, marker[pointid]);
178 }
179
180 //添加查询结果的marker&infowindow
181 function addmarker(i, d) {
182     var lngX = d.location.getLng();
183     var latY = d.location.getLat();
184     var markerOption = {
185         map:mapObj,
186         icon:"http://webapi.amap.com/images/" + (i + 1) + ".png",
187         position:new AMap.LngLat(lngX, latY)
188     };
189     var mar = new AMap.Marker(markerOption);
190     marker.push(new AMap.LngLat(lngX, latY));
191
192     var infoWindow = new AMap.InfoWindow({
193         content:"<h3><font color=\"#00a6ac\">  " + (i + 1) + ". " + d.name + "</font></h3>" + TipContents(d.type, d.address, d.tel),
194         size:new AMap.Size(300, 0),
195         autoMove:true,
196         offset:new AMap.Pixel(0,-30)
197     });
198     windowsArr.push(infoWindow);
199     var aa = function (e) {infoWindow.open(mapObj, mar.getPosition());};
200     AMap.event.addListener(mar, "click", aa);
201 }
202
203 //infowindow显示内容
204 function TipContents(type, address, tel) {  //窗体内容
205     if (type == "" || type == "undefined" || type == null || type == " undefined" || typeof type == "undefined") {
206         type = "暂无";
207     }
208     if (address == "" || address == "undefined" || address == null || address == " undefined" || typeof address == "undefined") {
209         address = "暂无";
210     }
211     if (tel == "" || tel == "undefined" || tel == null || tel == " undefined" || typeof address == "tel") {
212         tel = "暂无";
213     }
214     var str = "  地址:" + address + "<br />  电话:" + tel + " <br />  类型:" + type;
215     return str;
216 }
217
218 </script>

地图查询

时间: 2024-10-07 11:52:17

地图查询的相关文章

arcgis api for js入门开发系列四地图查询(含源代码)

备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效果图: 谈核心代码实现之前,我大概的讲一讲arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTask (1)FindTask查询模式:基于关键字来模糊查询

厦门电子地图,厦门市地图,厦门地图查询,公交线路查询地图

厦门市位于台湾海峡西岸中部.闽南金三角的中心,地处北纬24°23'-24°54'.东经117°53'-118°26',隔海与金门县.龙海市相望,陆地与南安市.安溪县.长泰县.龙海市接壤.厦门市境域由福建省东南部沿厦门湾的大陆地区和厦门岛.鼓浪屿等岛屿以及厦门湾组成.2011年,全市土地面积1573.16Km2,其中厦门本岛土地面积141.09Km2(含鼓浪屿),海域面积约390Km2. 厦门电子地图包含厦门市基础地图.厦门交通地图.酒店.景点.学校等.最新版厦门攻略地图为你自助游.自驾游.户外游

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

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

获取百度地图POI数据一(详解百度返回的POI数据)

POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数据,要获取其上的POI数据可以根据百度地图提供的API,但是这种方式有限制,能获取的数据极少.本文将详细介绍通过模拟HTTP请求的方式获取其上的POI数据. 当我们在百度地图的搜索框中通过输入关键字进行搜索时,这其实就是发送一个HTTP请求到百度的服务器,然后服务器返回数据. 打开网页的调试面板可以

那些年,我们用过的地图下载器

作为地信.遥感.地质.测绘等专业的同学,下载电子地图.遥感影像应该都接触过,现在XX地图下载器广告满天飞,虽然各位同学唯唯诺诺,还是被群主踢出了.现在把自己那些年珍藏的地图下载器分享给大家.对各种下载器的功能.精度等不作评价,感谢各位开发者和破解者. 请不要因为版权问题给我发邮件,本来这些截图软件的开发者已经侵犯了地图服务商的权益,单方面地做一个免责声明是无济于事的. 全能电子地图下载器 版本:1.9.5 官网:http://www.cnblogs.com/i-gps/ 简介:全能电子地图下载器

jplogic之GIS搜狗地图开发案例

在项目开发过程中我们可能遇到各种各样的需求,而GIS在应用便是其中一个.特别是在web类型的项目中会经常用到.我们都知道 网络地图服务,以其实时性.大信息量.丰富的功能,成为传统地图的延伸,同时扩展出无法替代的实用性和功能性,随着互联网的发展,网络地图已成为人们经常使用的互联网服务之一.因此我们可以在很多类型的应用中看到这些应用关于GIS技术的运用.我们可以在很多地方可以看到它的身影,比如google地图.百度地图.高德地图.搜狗地图等,这些电子地图服务商都提供大量的API允许开发者很方便在自己

百度地图-简单集成

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

用百度地图API分析打交通大数据

百度地图API, 文档不全,例子不细致. 在网上还没有太多有用的例子.比如说下面几个需求的解决方案就找不到: 1. 如何用百度地图API查询一个地点的经纬度. 2. 如何用百度地图通过一个经纬度查询商圈和地址. 3.点击百度地图时, 获得点击位置的经纬度. 4. 如果按照时间轴动态显示热力图的变化. 我昨天玩了一下午百度地图javascript API,解决了上面的几个问题,顺道用少量打车用户的抽样数据做一个数据可视化, 给大家提供一个可以参考的例子 首先数据是来自北京市某个周日的出行数据, 其

【云图】如何设置支付宝里的家乐福全国连锁店地图?

摘要:本文详细讲解了,如何设置支付宝服务窗.商家如何将自己的全国连锁店放置到云图上,并且在支付宝服务窗中提供地图查询功能.本文所包含的地图服务为: 1.按城市查询门店地址: 2.列表模式和地图模式的方便切换: 3.调起打电话服务,更快与客户直接接触: 4.地图定位,导航,查周边. ---------------------------------------------------------------------------- 一.支付宝 1.服务窗设置 登录支付宝服务窗:https://f