posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Google Map Api和GOOGLE Search Api整合擴展地圖本地搜索

          Posted on 2009-05-01 12:08 詩特林 閱讀(2855) 評論(1)  編輯  收藏 所屬分類: GIS

          http://www.playgoogle.com/post/44.html 
          將GOOGLE MAP API 和 GOOGLE Search API 進行整合,我用面向對象的方式寫了一個類,通過傳一個經緯度進去,自動通過GOOGLE LOCAL SEARCH獲取附近的相關信息。比如餐廳、景點等,反過來標到地圖上,并可在任意容器內顯示。

          下面是源碼:

          /*
          *Author:karry
          *Version:1.0
          *Time:2008-12-01
          *KMapSearch 類
          *把GOOGLE MAP 和LocalSearch結合。只需要傳入MAP\經緯度值,就可以把該經緯度附近的相關本地搜索內容取出來,在地圖上標注出來,并可以在指定容器顯示搜索結果
          */


          (
          function() {
              
          var markers= new Array(); 
              
          var KMapSearch=window.KMapSearch= function(map_, opts_) {
                  
          this.opts = {
                      container:opts_.container 
          || "divSearchResult",
                      keyWord:opts_.keyWord 
          || "餐廳",
                      latlng: opts_.latlng 
          || new GLatLng(31121),
                      autoClear:opts_.autoClear 
          || true,
                      icon:opts_.icon 
          || new GIcon(G_DEFAULT_ICON)
                  }
          ;
                  
          this.map = map_;
                  
          this.gLocalSearch = new google.search.LocalSearch();
                  
          this.gLocalSearch.setCenterPoint(this.opts.latlng);
                  
          this.gLocalSearch.setResultSetSize(GSearch.LARGE_RESULTSET);
                  
          this.gLocalSearch.setSearchCompleteCallback(thisfunction() {
                      
          if (this.gLocalSearch.results) {
                          
          var savedResults = document.getElementById(this.opts.container);
                          
          if (this.opts.autoClear) {
                              savedResults.innerHTML 
          = "";
                          }

                          
          for (var i = 0; i < this.gLocalSearch.results.length; i++{
                              savedResults.appendChild(
          this.getResult(this.gLocalSearch.results[i]));
                          }

                      }

                  }
          );
              }

              KMapSearch.prototype.getResult 
          = function(result) {
                  
          var container = document.createElement("div");
                  container.className 
          = "list";
                  
          var myRadom =(new Date()).getTime().toString()+Math.floor(Math.random()*10000);
                  container.id
          =myRadom;
                  container.innerHTML 
          = result.title + "<br />地址:" + result.streetAddress;
                  
          this.createMarker(new GLatLng(result.lat, result.lng), result.html,myRadom);
                  
          return container;
              }

              KMapSearch.prototype.createMarker 
          = function(latLng, content)
              
          {
                  
          var marker = new GMarker(latLng, {icon:this.opts.icon,title:this.opts.title});
                  GEvent.addListener(marker, 
          "click"function() {
                      marker.openInfoWindowHtml(content);
                  }
          );
                  markers.push(marker);
                  map.addOverlay(marker);
              }

              KMapSearch.prototype.clearAll 
          = function() {
                  
          for (var i = 0; i < markers.length; i++{
                      
          this.map.removeOverlay(markers[i]);
                  }

                  markers.length 
          = 0;
              }

              KMapSearch.prototype.execute 
          = function(latLng) {
                  
          if (latLng) {
                      
          this.gLocalSearch.setCenterPoint(latLng);
                  }

                  
          this.gLocalSearch.execute(this.opts.keyWord);
              }

          }
          )();


          使用方法:

           var myIcon = new GIcon(G_DEFAULT_ICON);
                      myIcon.image 
          = "canting.png";
                      myIcon.iconSize 
          = new GSize(1620);
                      myIcon.iconAnchor 
          = new GPoint(820);
                      myIcon.shadow 
          = "";
                      
          var mapSearch = new KMapSearch(map, {container:"cantingContainer",latlng:initPt,icon:myIcon,keyWord:"餐廳"});
                      mapSearch.clearAll();
                      mapSearch.execute();

           

           點擊這里查看演示示例:經緯度查詢整合本地搜索


          評論

          # re: Google Map Api和GOOGLE Search Api整合擴展地圖本地搜索  回復  更多評論   

          2009-06-25 22:31 by Guoxin
          你好,你知道在window桌面怎樣用Google Search API 嗎? 我的需求是這樣的:在TextBox輸入要搜索的關鍵字,把搜索的結果顯示在Gridview里面。我的郵箱是guoxinliu917@gmail.com. 希望能得到你的幫助。謝謝!!!
          主站蜘蛛池模板: 武隆县| 铜陵市| 紫云| 杭州市| 龙门县| 余姚市| 纳雍县| 余江县| 金秀| 微山县| 南开区| 沙河市| 肥城市| 明溪县| 高青县| 佳木斯市| 怀柔区| 乌拉特中旗| 石家庄市| 浦城县| 金平| 理塘县| 安陆市| 清水河县| 新巴尔虎右旗| 余江县| 轮台县| 汝南县| 秦皇岛市| 镇康县| 柳河县| 石河子市| 永安市| 昌宁县| 玛纳斯县| 黑龙江省| 拉孜县| 长武县| 新竹市| 岳普湖县| 乌拉特后旗|