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" />

       由于周边搜索的填充色太淡了,所以我做了一些修改:

//改变半圆填充颜色
function changeRadiusColor(){
	var i=0;
	while($("ellipse").length<1 && i<1000){i++; }
	$("ellipse:eq(0)").attr("fill","#9ec0de");
}

       为了避免在输入内容,但是未点击搜索,而是直接点击周边搜索而出现错误,所以我添加了一个变量:

var isSearch=false;//标记是否点击搜索

       修改搜索这个方法,当点击搜索时把这个变量为true:

//搜索
function search_center(){
  var kw = $(".kw").val();
  isSearch = true;
  search(null,kw);
}

       添加一个周边查询前的判断方法:

function search_area_before(classid){
  if(!isSearch){//如果没有搜索,则先执行搜索,再搜索周边
    search_center();
    setTimeout(search_area,1000,classid);
    //设定搜索半圆的填充色
    setTimeout(changeRadiusColor,1500);
  }else{
    search_area(classid);
  }
}

       修改search_area方法,在方法的最后添加一下代码:

  //重新定位地图中心点
  setTimeout(toCenter,500);
  //设定搜索半圆的填充色
  setTimeout(changeRadiusColor,300);

      页面全部重新替换一下:

<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-12-31 03:39:23

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

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

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

GIS(二)——在js版搜狗地图上添加brand标牌

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

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

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

GIS(三)——优化js版搜狗地图的brand标牌样式

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

搜狗地图2.2.0版评测 免费语音导航

3月29日消息,近日,搜狗地图更新版本至2.2.0版.据了解,新版本增加了路随车转,车头向上这一亮点功能,定位也更加精准,并且支持了cmwap联网搜索.免费语音导航 图随路转搜狗地图目前推出的android2.2.0版是目前业内评价较高的地图导航软件,特别是其免费语音导航的功能.搜狗地图的最新版(android2.2.0版)语音导航相当给力.女声播报让人倍感亲切,导航基本不偏向.特别是导航过程中能够图随路转,使用起来非常的方便直观.静止时,地图上的模拟手机的指向就是地图的方向:导航时,地图上模拟

谷歌升级iOS和Android版谷歌地图

5月7日,谷歌对iOS和Android版谷歌地图进行升级,其中iOS版版本号是3.0,而Android版版本号是8.0.最新版本中对离线地图的控制进行优化,同时提供了一系列有用的导航功能. 现在iOS版和Android版谷歌地图的功能已经差不多了.在最新版本中,用户可以选择某一区域,调整视图,随后自主命名这一区域.应用将在用户个人档案中列出所有离线地图,而用户可以对这些离线地图进行编辑或删除. 在最新版应用中,方向导航功能仍需要网络连接,但得到了大幅改进.新版谷歌地图提供了车道助手,帮助用户避免

挑战Siri 谷歌将推增强版iOS语音搜索

苹果与谷歌之间的紧张关系正在不断升级,双方都想在移动互联网的市场中扩大自己的影响,并同时削弱对手.近日谷歌宣布,将为iPhone和iPad推出新版的搜索应用,其中包括增强版的语音搜索功能,这将使苹果的Siri面临着巨大的竞争.谷歌表示,新版的ios谷歌搜索应用将和Android 4.1(Jelly Bean)系统中的类似,并将在数日 内推出.此举不仅意味着谷歌对苹果Siri市场的渗透,同时也是谷歌反击苹果的一种手段,此前苹果在iOS更新中去除了与谷歌有关的谷歌地图和Youtube等应用.

在win7旗舰版中无法搜索到文件怎么办?

  今天小编办公室的一个同事遇到了一个困难,据同事说,他很清楚的记得自己将某个文件存放在了w764位旗舰版电脑中,大家也知道,作为文职文员,电脑中的文件是很多的,有时候一时忘记了文件存放的位置也是很自然的,翻了老半天,该同事终于放弃了寻找,于是想到了使用win7旗舰版中的搜索功能来查询,但是郁闷的是,win7旗舰版中的搜索功能居然告诉它电脑中没有这个文件,搜索没有结果,那么这是怎么回事呢?下面,咱们就详细的介绍一下解决的办法吧! 1.首先,咱们单击win7旗舰版中的开始菜单,这样就可以在打开的开

地图搜索的几大优势

作为全国首家短租房在线预订网站,爱日租在这个行业一直是扮演着短租行业风向标的角色.如今,爱日租为了更加完善用户的体验,在全国范围内推出了地图搜索功能.这不仅加强了爱日租网站的搜索功能,更让爱日租进一步迈向了LBS的全方位服务. 地图搜索的几大优势 地图搜索的优势相信不必多说,大家都有所了解,而随着全球范围内LBS文化的发展,地图服务更是使得个体在日常生活中深受其惠.而对于一个短租房租赁服务网站来说,提供这种搜索功能更是尤为重要的. 首先是信息更加全面.清晰,打开爱日租的地图搜索页面,便能清楚的看