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. 希望能得到你的幫助。謝謝!!!
          主站蜘蛛池模板: 温州市| 河西区| 南陵县| 长沙市| 彩票| 昭平县| 灌云县| 阆中市| 白城市| 禹州市| 贞丰县| 图们市| 金门县| 剑川县| 察隅县| 民和| 崇明县| 昆山市| 奉化市| 长子县| 宣化县| 萨嘎县| 德州市| 新郑市| 南和县| 合山市| 嫩江县| 定结县| 东乡县| 巴青县| 上杭县| 弥渡县| 郯城县| 白银市| 额尔古纳市| 营口市| 柘城县| 兴安县| 东港市| 南陵县| 洛宁县|