GIS(七)——js版搜狗地图搜索功能美化版

在前2篇文章中介绍了关键字搜索和周边搜索的功能,但是界面比较简陋,所以这一版我主要做一些美化工作。

这次主要优化的方面有2个方面,一个是页面的样式,包括字体、按钮、布局等;二是要添加一个搜索的智能提示。

首先修改页面的样式,更改

  #map{position:absolute;width:1364px; height:550px;}
  #option{
      height:50px;
      width:1336px;
      border:solid 1px #CCCCCC;
      padding:10px;
  }

添加两个css样式

<link href="http://mfxuan.free.800m.net/blogCss/reset.css" type="text/css" rel="stylesheet" />
<link href="http://mfxuan.free.800m.net/blogCss/main.css" rel="stylesheet" type="text/css" />

页面全部重新替换一下:

<body onload="initialize()">
  <div class="yxqy">
    <!-- 地图搜索 -->
    <div id="dtss" class="div_tab" style="display:block">
      <div class="map_btn">
        <span class="ssq"><input type="text" class="kw"
          onblur="if(this.value=='') $(this).css('background-image','url(http://mfxuan.free.800m.net/blogImage/map_sskBG2.jpg)')"
          onfocus="$(this).css('background-image','url(http://mfxuan.free.800m.net/blogImage/map_sskBG.jpg)')"
          onkeydown="if(event.keyCode == '13')search_center();"/>
        <a href="#" onclick="search_center()">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_serch.jpg" width="40" height="40" /></a></span>

        <!-- 搜索周边 -->
        <a href="#" onclick="search_area_before('97,1264,1262')">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_zbgjz.jpg" /></a>
        <a href="#" onclick="search_area_before('1228,1403,1330,1332')">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_zbcy.jpg" /></a>
        <a href="#" onclick="search_area_before('83,1321,1259')">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_zbsc.jpg" /></a>
        <a href="#" onclick="search_area_before('C_32')">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_zbld.jpg" /></a>
        <a href="#" onclick="search_area_before('1261')">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_zbjc.jpg" /></a>
        <a href="#" onclick="search_area_before('39')">
          <img src="http://mfxuan.free.800m.net/blogImage/btn_zbyy.jpg" /></a>
      </div>
      <div id="map" class="map_map"></div>
      <div id="result"></div>
    </div>
  </div>
</body>

这样页面就大变样了。主要是把布局修改了一下,搜索部分和地图之间有了层次感。搜索框和周边搜索也都使用了图片来进行了美化。下面是我美化好的图片和部分原图资料:

 周边搜索按钮PS下载

这样,美化部分就算是完成了。

下面就是这个搜索的智能提示了。在所有的地图提供商的搜索页面,都提供了智能提示的功能。所以,我也要把这个功能加到这里。但是却怎么也找不到搜狗地图的智能提示的js。看来搜狗地图没有提供这方面的实例和js。既然这样,那我只好用其他提供商的智能提示了。

在百度上搜索“百度搜索栏智能提示功能代码”,第一个就是教如何在页面上使用百度搜索栏的智能提示。首先在页面上添加一个input:

<input type="text" name="word" baiduSug="1|2">

当设置baiduSug=1时,用户选中sug词条时默认执行表单提交动作;当设置baiduSug=2时,用户选中sug词条时不执行表单提交动作。

然后在网页中引入Javascript文件:

<script charset="gbk" src="http://www.baidu.com/js/opensug.js"></script>

这里需要特别强调的是:其中Javascript的文件位置是非常有讲究的!必须放置在</body>标签的后面!

本来吧到这里应该就算是结束了,不过却出现了一个小问题。如果你留意的话,在地图搜索页面,提供商提示的都是地点,但是使用百度搜索栏则提示的不全是地点。所以必须选择另一个方案了。

在百度地图的示例DEMO中,找到了一个输入提示的示例代码,点击这里进行查看。智能提示主要是用到了一个js:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>

这个密钥是你在百度开发者中心注册后得到的,不会的自己百度就行了。下面接着对地图进行修改。在页面上添加百度地图智能提示的js:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=F135d24da388348cb105c6b226fb5801"></script>

在页面的最后(</html>)加入一段js:

<script type="text/javascript">
	var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
		{"input" : "suggestId"
	});

	ac.addEventListener("onconfirm", function(e) {    //鼠标点击下拉列表后的事件
    	search_center();
	});
</script>

搜索的input,添加一个id为"suggestId" ,即:

<input type="text" class="kw" id="suggestId"
  onblur="if(this.value=='') $(this).css('background-image','url(images/map_sskBG2.jpg)')"
  onfocus="$(this).css('background-image','url(images/map_sskBG.jpg)')"
  onkeydown="if(event.keyCode == '13')search_center();"/>

这样功能上就实现了。但是为了更美观一些,我们再设定一下下拉时的字体样式:

//百度智能提示下拉框字体
.tangram-suggestion table tr{
  font-size:20px;
}

终于完工了,最终的效果图如下:

点击这里到网站上查看

到此GIS系列的文章全部结束了。如果文中有什么错误之处,欢迎大家指正。

时间: 2024-08-05 07:09:23

GIS(七)——js版搜狗地图搜索功能美化版的相关文章

GIS(六)——实现js版搜狗地图周边搜索功能

在上一篇文章<GIS(五)--完成js版搜狗地图基本交互搜索功能>中,介绍了搜狗地图的关键字搜索功能,今天就实现以下另一个重要功能吧--那就是周边搜索功能. 按照惯例,还是把官网上的示例代码给大家贴出来.飞机票在此.周边搜索的功能,跟关键字搜索其实是一样的,也是主要用到的了SearchRequest这个类,点击这里查看api文档.SearchRequest 对象规范: 属性 类型 说明 map Map 进行搜索的地图实例 renderer SearchRenderer 将结果进行渲染的对象.也

GIS(四)——为js版搜狗地图添加边界+Marker和Brand的最终美化版

在<GIS(三)--优化js版搜狗地图的brand标牌样式>中,分享了一下Brand样式的修改.现在把这几次Marker和Brand的修改统一再美化一下,算作一个终极优化版吧. 这次优化的主要内容是: 为整个操作的区域,添加边界 为Marker更换动态图片 为Brand更换半透明红色图片 只显示一个Brand,每3秒切换一次 1.绘制边界 首先做第一个吧,在搜狗地图上添加边界,是一个很简单的.很基本的,但是又很人性化的一个功能.在官网的实例代码中,覆盖层的第21个示例代码<画多边形区域.

在js版搜狗地图上添加brand标牌

在上一篇博文中,我在搜狗地图上添加了Marker标记,但是在用户体验度上还是不够的,如果想了解某些信息,你得把鼠标指向marker,才能看到title里的值.有没有一种可以直接显示在marker上的东东呢? 其实有很多方法可以做到.搜狗地图提供了叠加层类,但是可以直接在页面上显示信息的,貌似只有InfoWindow.Label和Brand.一般InfoWindow是用来显示大量信息的.所以我们显示少量信息一般选用Label和Brand.但是Label显示的效果比较一般,四棱四角的,而Brand则

GIS(五)——完成js版搜狗地图基本交互搜索功能

最近在做的有关于北京海淀智慧旅游的一个项目,既然是旅游项目,那么涉及到地图的操作也就是必然的事情了.前几篇文章,主要是分享了在地图上标记多个景点及其景点信息的技术.其实跟项目中还是有一些不一样的.项目中要求实时显示景点的信息,根据实时数据,更新Marker的颜色(绿.橙.红),以及实时更新景点Brand上的景点信息(游客流量.舒适度).这些都没有出现在文章中,文章只是从技术的角度来验证的. 今天主要要做的是地图上的一个基本功能--交互搜索. 其实官网上搜索的例子并不是很多,而且真的不怎么滴.不过

优化js版搜狗地图的brand标牌样式

从上一篇博文的效果图中,我们看到有几个相近的brand标牌给相互遮挡住了,不能完整的显示.怎么处理一下呢?今天我们就来研究一下这个解决方案. 其实要想不被遮挡,可以让这几个brand位置变动一下,而不总是箭头向下指向景点.如果改变箭头的指向呢?首先我们要了解它原本是怎么处理的.这个肯定是从spirit入手了. 先说一下spirit的参数: { url:"http://api.go2map.com/maps/images/v2.5/2.png", imgSize:[140,77], //

ol3 Demo2 ----地图搜索功能

先放效果图: 下面是核心代码: //地图搜索 function search(){ var searchstr = document.getElementById("searchkey").value; vectorSource.clear(); // 构造一个WFS request var featureRequest = new ol.format.WFS().writeGetFeature({ srsName: 'EPSG:3857', featureNS: 'www.vnm.c

【常用】网页调用百度地图美化版

功能描述: 在web网页中调用百度地图API,在公司联系方式页面显示地图.(百度地图api版本2.0) 设置了百度自带的“高端灰”风格,加入了标注,和信息窗口,以及点击事件,支持鼠标滚轮缩放. 展示页代码面: <div id="ContactMap" style="width:800px;height:500px;"></div> <script type="text/javascript" src="ht

修改百度地图SearchInRectangle.js,去掉搜索功能,实现拖动搜索框时获得右下角坐标经纬度

var BMapLib = window.BMapLib = BMapLib || {};//var rbPoint=0;(function() { /** * BMAP_ZOOM_IN 拉框后执行放大操作 * @type {int} */ var BMAP_ZOOM_IN = 0; /** * @exports SearchInRectangle as BMapLib.SearchInRectangle */ var SearchInRectangle = /** * SearchInRect

jplogic之GIS搜狗地图开发案例

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