<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    于吉吉的技術博客

    建造高性能門戶網

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      65 隨筆 :: 6 文章 :: 149 評論 :: 0 Trackbacks

    房產地圖google map的初步應用點滴.1)
    房產地圖google map的初步應用點滴.2)
    房產地圖google map的初步應用點滴.3)
    房產地圖google map的初步應用點滴.4)


    以前的房產地圖一直都是使用有道地圖,雖然有道地圖是很好,但是為了更好,還是決定使用google地圖來重新開發^_^,下面是一個開發完畢的簡單應用http://xf.house.163.com/gz/map/000B.html

    1)整合Google Maps JavaScript API V3 與 Google Local Search API

    Google Maps JavaScript API V3
    地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/

    Google Maps JavaScript API V3 文檔讀起來真的是很清晰,各種demo也很齊全,并且論壇的擁有巨大的論壇支持,對比了一下Google Maps JavaScript API V3 和 V2 的版本,雖然第3版的 Google Maps API 看上去跟第2版挺相識,但在內在機制上有了較大的變化,尤其在對移動瀏覽器的支持上,專門針對iphone和android設備的開發。V2版本google已經宣布不再予以繼續支持,所以還是選擇了V3版本。

    Google Local Search API
    地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/localsearch/index.html

    上面的地址是目前Local Search的最新地址,但郁悶的是居然掛上了 Deprecated ,一樣的文檔也相當齊全,在應用之前需要先為你的域名申請一個API key,這個是注冊地址http://code.google.com/intl/zh-CN/apis/maps/signup.html,很簡單,按照提示很快就搞定了。


    在整合Google Maps JavaScript API V3和Google Local Search API發現這兩個版本是不兼容的,Local Search API實際上還是沿用了Maps V2的接口,為了解決這個問題,需要中間一個跳板使得兩者兼容,所以選擇了iframe,父頁面使用Google Maps V3,子頁面使用Local Search API,當需要應用到本地搜索時,父頁面向子頁面傳遞查詢條件,子窗口應用Local Search API獲得查詢的result后返回給父頁面,這樣就形成一個跳板,避免了兩者因為版本問題而產生的沖突,當然還有其他的辦法,不過iframe應該是比較簡單處理,下面是一個demo



    父頁面 : 使用的是Google Maps JavaScript API V3,http://maps.google.com/maps/api/js 網址指向 Javascript 文件所在的位置,該文件會載入使用第 3 版 Google Maps API 所需的全部符號和定義。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=GBK"/>
    <title>Google AJAX Search API Sample</title>
    <style type="text/css"> 
    @import url("http://www.google.com/uds/css/gsearch.css");
    @import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");
    @import url("http://www.google.com/uds/css/gsearch.css");
    @import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");

    </style>
    <script type="text/javascript" src="http://xf.house.163.com/product/js/jquery.js"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
          
    var map;
          
    var lat = 23.116193;
          
    var lng = 113.374525;
          
    var markersArray = [];
          
    var windowArray = [];
          
    function initialize() {
            
    var mapDiv = document.getElementById('map-canvas');
              map 
    = new google.maps.Map(mapDiv, {
              center: 
    new google.maps.LatLng(lat,lng),
              zoom: 
    15,
              mapTypeId: google.maps.MapTypeId.ROADMAP
            });
          }
     
          
    //刪除疊加層
          function deleteOverlays() {
              
    if (markersArray) {
                
    for (i in markersArray) {
                  markersArray[i].setMap(
    null);
                }
                markersArray.length 
    = 0;
              }
          }
     
          
    //關閉信息提示窗口
          function closeWindows() {
              
    if (windowArray) {
                
    for (i in windowArray) {
                    windowArray[i].close();
                }
              }
             }
          
          
    function show(results){
              parent.deleteOverlays();
              windowArray.length 
    = 0;
              
    for (var i = 0; results && i < results.length; i++) {
                  showOne(results[i]);
              }
          }
          
    function showOne(result){
              
    //console.debug(result.title+","+result.lat+":" + result.lng +","+result.streetAddress+","+result.city+","+result.url);
              var infowindow = new google.maps.InfoWindow({
                  content: result.html
                });
                
    var marker = new google.maps.Marker({
                    position: 
    new google.maps.LatLng(result.lat,result.lng),
                  map: map
                });
                markersArray.push(marker);
                windowArray.push(infowindow);
                google.maps.event.addListener(marker, 'click', 
    function() {
                  closeWindows();
                    infowindow.open(map,marker);
                });
          }

          
    function searchMap(){
              
    var keyWord = document.getElementById("keyWord").value;
              mapIframe.window.loadMap(
    23.116193,113.374525,keyWord);
          }
          google.maps.event.addDomListener(window, 'load', initialize);
        
    </script>
    </head>
    <body style="">
    <div id="map-canvas" style="width: 600px; height: 500px"></div>
    <input type="text" name="keyWord" id="keyWord"/>
    <input type="button" onclick="searchMap();" value="查詢" id="btn"/>
    <iframe name="mapIframe" id="mapIframe" style="display:none" src="local.html"></iframe>
    </body>
    </html>


    子頁面:http://www.google.com/jsapi?key 需要在google進行申請與域名綁定

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=GBK"/>
    <script src="http://www.google.com/jsapi?key=ABQIAAAAtV_DTJOYJT-9cvTO-5KJ2BSnjw5qeDlzCnItJoREFggHbBwu_RQBEyFqvq_vMlzqsS4afIB8ZIvMkw" type="text/javascript"></script>
    <script type="text/javascript"> 
        google.load('search', '
    1');
        google.load('maps', '
    2');
     
        
    function loadMap(lat,lng,keyWord) {
            
    var point = new GLatLng(lat,lng);
            console.debug(keyWord
    +"-"+lat+","+lng);
            searchMap(point,keyWord);
        }
            
        
    function searchMap(point,keyWord){
            
    var searcher = new google.search.LocalSearch();
            searcher.setCenterPoint(point);
            searcher.setResultSetSize(GSearch.LARGE_RESULTSET);
            searcher.setSearchCompleteCallback(
    thisfunction() {
              parent.show(searcher.results); 
            });
            searcher.execute(keyWord);
        }
    </script>
    </head>
    <body></body>
    </html>


    摘錄幾個常用的Local Search API Reference

    new google.search.LocalSearch() : 創建了一個LocalSearch的Service

    searcher.setCenterPoint(point) : 它接受單一變量,該變量可以是字符串、google.maps.Map2 或google.maps.LatLng。如果是字符串,會嘗試將字符串解析為 google.maps.LatLng

    searcher.setResultSetSize(8) : 調用此方法以選擇由每個搜索器返回的結果數

    searcher.setRestriction() : 設置搜索結構類型

    searcher.setSearchCompleteCallback() : 此方法用于注冊對象和方法以通知搜索完成。應用程序可以通過使用 opt_arguments之后隨意傳入環境參數

    searcher.execute(keyWord) :  調用此方法以開始新的搜索 

    第一步解決了map和local search的版本沖突后,下面可以進行全部的開發,Google Maps JavaScript API提供的UI,EVENT相關接口非常之多,但不一定就能直接適用我們的需求,還需要使用繼承基類MVCObject,OverlayView等繼續封裝。

    如果你也在進行google map的開發,歡迎賜教和討論,建了個qq群:11029590

    ----------------------------------------

    by 陳于喆
    QQ:34174409
    Mail: dongbule@163.com
    posted on 2011-02-12 15:57 陳于喆 閱讀(4965) 評論(6)  編輯  收藏 所屬分類: web開發Google Map開發

    評論

    # re: 房產地圖google map的初步應用點滴.1)[未登錄] 2011-02-16 17:35 hain
    googl 地圖會不會被停掉?  回復  更多評論
      

    # re: 房產地圖google map的初步應用點滴.1) 2011-02-20 17:12 好店8
    話說GOOGLE地圖真是很不錯,但有墻的存在,調用起來總是很慢。非常感謝博主留下這篇好文,以饗后來者。  回復  更多評論
      

    # re: 房產地圖google map的初步應用點滴.1) 2011-03-10 17:05 he
    你好,請問搜索結果的數據是谷歌的,還是自己標注的  回復  更多評論
      

    # re: 房產地圖google map的初步應用點滴.1) 2011-03-10 18:32 陳于喆
    @he
    搜索是Google Local Search提供~  回復  更多評論
      

    # re: 房產地圖google map的初步應用點滴.1) 2011-07-03 16:38 龍曉舟
    @陳于喆

    請問,要是網站內有用戶自己標注的數據,怎么能讓其他用戶也能搜索到?  回復  更多評論
      

    # re: 房產地圖google map的初步應用點滴.1) 2011-07-04 11:34 陳于喆
    @龍曉舟
    用戶錄入的那只能是放在你的服務端來進行搜索了  回復  更多評論
      

    主站蜘蛛池模板: 日韩欧美亚洲国产精品字幕久久久| 中文字幕亚洲不卡在线亚瑟| 亚洲AV无码第一区二区三区 | 久久综合久久综合亚洲| 亚洲高清免费在线观看| 亚洲日韩图片专区第1页| 你懂的免费在线观看网站| 亚洲VA成无码人在线观看天堂| 国产免费无码AV片在线观看不卡 | 亚洲欧洲一区二区| 久久w5ww成w人免费| 亚洲综合无码一区二区三区| **一级一级毛片免费观看| 人禽伦免费交视频播放| 亚洲午夜无码AV毛片久久| 丁香花在线观看免费观看图片| 亚洲熟妇无码八AV在线播放| 国产午夜无码精品免费看| 亚洲综合色一区二区三区小说| 日韩免费a级毛片无码a∨| 久久久久亚洲国产AV麻豆| 久久久久久亚洲精品不卡| 欧洲人成在线免费| 亚洲男人的天堂在线| 好吊妞998视频免费观看在线| 最新亚洲人成无码网www电影| 亚洲国产精品成人一区| a级毛片无码免费真人久久| 亚洲精品mv在线观看| 最好免费观看韩国+日本| 无码免费又爽又高潮喷水的视频| 亚洲精品无码成人AAA片| 亚洲一级免费毛片| jizzjizz亚洲日本少妇| 综合亚洲伊人午夜网| 国产a视频精品免费观看| 人妻无码中文字幕免费视频蜜桃 | 亚洲国产成人久久精品软件| 亚洲男人在线无码视频| 波多野结衣在线免费视频| 老司机午夜性生免费福利|