zoukankan      html  css  js  c++  java
  • 用google地图搜索并标注周边的学校,医院,车站等的实现方法

         转眼之间我的blog访问量已经超过9万了,值得庆贺一下.今天放个重量级炸弹出来.

         很多使用google地图的同学肯定都想实现标注周边环境的功能,该功能可参照http://local.google.com/

    只要我们在地图上输入学校,进行搜索之后地图就可以自动把周围的学校给标记出来.该功能很强,实现起来却非常麻烦,这需要借助google的多个API才能实现,首先是map其次分别是localsearch和ajax.另外如果你要使用这个搜索功能,就必须要申请一个key,

    申请地址是:http://code.google.com/intl/zh-TW/apis/maps/signup.html

    接下来我就直接发代码了. 欢迎转载但请注明出处Email:See7di@Gmail.com,Seven的部落格http://hi.baidu.com/see7di/home

    <DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Search API Sample</title>
    <script src="http://www.google.com/jsapi?key=这个key你需要自己去google申请"></script>
    <script type="text/javascript">
    google.load('search','1');
    var localSearch;
    function searchComplete(){
    if(localSearch.results && localSearch.results.length>0){
    for(var i=0;i<localSearch.results.length;i++){
    var lr = localSearch.results[i];

    //如果你要在你的地图内标记,那么下边的三行你可以删掉,换成用地址在地图标记的代码就行了.
    var a = document.createElement('a');
    a.innerHTML = "<br><a href='"+lr.url+"' target='_blank'>"+lr.title+"</a><br>地址:"+lr.region+" "+lr.city+" "+lr.streetAddress+"<br>";
    document.body.appendChild(a);
    }
    }
    }

    function onLoad(){
    localSearch = new google.search.LocalSearch();
    localSearch.setCenterPoint("台灣桃園縣");

    //搜索完之後的回調函數
    localSearch.setSearchCompleteCallback(this,searchComplete,null);
    localSearch.setResultSetSize(GSearch.LARGE_RESULTSET);

    //要搜索的關鍵字
    localSearch.execute('學校');
    }

    //入口
    google.setOnLoadCallback(onLoad);

    </script>
    </head>
    <body style="font-family:Arial;font-size:12px;">
    </body>
    </html>

    上边的代码我已经把桃园周围的学校给搜出来了,至于如何标记到地图上那就简单了,原理很简单,我们通过上边的代码已经把学校的地址给抓出来了,有了地址我们就能够通过地址标记的方式在地图上做标记了.代码如下

    $('#test').gmap3({
    action:'addMarker',address:"台灣桃園縣八德市重慶街188巷61弄22號",
    map:{center:true,zoom:14,mapTypeId:google.maps.MapTypeId.TERRAIN}
    });

    上边这段代码之所以这么简单,是因为我使用了一个美国人封装的jquery扩展

    这个扩展可以从http://gmap3.net/download.html下载到.此人把google map v3.0的类用jquery封装成了一个插件,调用的时候非常简单.本来我想找一下localsearch的jquery的,但是放狗找了半天却无果.有知道的童鞋麻烦你留言和我说一声.

    下邊的代碼是我用Jquery對其進行了一次封裝,既然網上找不到,那我就自己動手豐衣足食吧!

    <DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Search API Sample</title>
    <script type="text/javascript" src="img/jquery-1.5.2.min.js"></script>
    <script src="http://www.google.com/jsapi?key= 这个key你需要自己去google申请 "></script>
    <script type="text/javascript">
    (function($){
     //LocalSearch,用來搜索周邊並返回Json結構的結果,并傳遞值給方法$.Ptr()
     //參數:ads參照點的地址,key搜索關鍵字

    try{google.load('search','1')}catch(e){}
    $.Srr = function(_o){
    var _Ls;
    try{google.setOnLoadCallback(_Load)}catch(e){}
    function _Load(){
    _Ls = new google.search.LocalSearch();
    _Ls.setCenterPoint(_o.ads);

    _Ls.setSearchCompleteCallback(this,_Comp,null);
    _Ls.setResultSetSize(GSearch.LARGE_RESULTSET);//设置返回的最大记录(8条)

    _Ls.execute(_o.key);
    }
    function _Comp(){
    var meg = '[';
    if(_Ls.results && _Ls.results.length>0){
    for(var i=0;i<_Ls.results.length;i++){
    var _Re=_Ls.results[i];
    meg=meg+'{"tit":"'+_Re.title+'","url":"'+_Re.url+'","ads":"'+_Re.region+_Re.city+_Re.streetAddress+'"},';
    }
    }
    meg =meg+']';$.Ptr(meg);
    meg=null;
    }
    }
    $.Ptr = function(meg){
    alert(meg);
    }

    })(jQuery)

    $(function(){
    $.Srr({
    'ads':'台灣桃園縣', //參照點的地址
    'key':'學校' //要搜索的對象
    });
    });

    </script>
    </head>
    <body style="font-family:Arial;font-size:12px;">
    </body>
    </html>

  • 相关阅读:
    PAT——1007. 素数对猜想
    PAT——1006. 换个格式输出整数
    PAT——1005. 继续(3n+1)猜想 (25)
    PAT——1003. 我要通过!
    PAT——1002. 写出这个数
    PAT——1001. 害死人不偿命的(3n+1)猜想
    PAT——年会抽奖(错位 排序 )
    PAT——年会抽奖(错位 排序)
    PAT——不吉利的日期(java中date和Calendar使用)
    MapReduce的输入格式
  • 原文地址:https://www.cnblogs.com/see7di/p/2239675.html
Copyright © 2011-2022 走看看