2012-07-10 80 views
0

假設我有一個全屏Google地圖,左邊有一個div(但嚴格來說,不是嚴格意義上的覆蓋或UI元素,地圖)和絕對定位。更改計算爲適合邊界框的區域

現在,讓我們說我有一個邊界框(如[[lat,lng],[lat,lng]],我想要地圖適合。如果我想要考慮div,該怎麼辦。我有絕對的位置和它的大小像素。有什麼我可以指定在地圖上說:「這個區域是越界,不要讓邊界框與它衝突嗎?」

+0

你想確定一個LatLngBounds,如果'左div'我與邊界相交,從邊界框中減去'左邊的div'座標並放大? – Rick 2012-07-10 14:14:19

+0

很多,是的:)我認爲你已經得到它! – basicallydan 2012-07-10 20:06:46

回答

0

你想在地圖上放置邊界框還是試圖確保所有標記都顯示在地圖內? api允許您設置邊界區域,以便在地圖加載地圖時可以看到所有點。地圖將相應地縮放或縮放。

設置您的功能範圍內添加以下內容

(function(){ 
    ..existing code 

    var bounds = new google.maps.LatLngBounds(); 
    var infowindow; 
    //Here I have an event listener that I have setup for the clicking of the markers 

    (function (i, marker) { 
     google.maps.event.addListener(marker, 'click', function() { 

      if (!infowindow) { 
       infowindow = new google.maps.InfoWindow(); 
      } 

      infowindow.setContent('Location: ' + i); 

      infowindow.open(map, marker); 
      }); 
     })(i, marker); 
      bounds.extend(places[i]); 
     } 
     map.fitBounds(bounds) 

    })(); 

這裏發生了一些事情。 Map是我的DIV層的名字,匿名函數只是用來包裝所有東西。我添加點擊事件代碼的原因是,當我點擊一個標記來查看信息窗口(使用bounds.extend(places [i]))時,我也可以顯示如何讓地圖自動定位。我沒有添加所有的代碼,比如標記生成,但是我通常會在這之後放置這段代碼,邊界函數作爲api的一部分,強制地圖根據標記位於頁面上,這樣可以確保當地圖呈現時,用戶可以看到所有的標記 不知道這是不是你想要的,但是如果你能說清楚我可以詳細說明一下

祝你好運

+0

謝謝:)但我認爲你不在那裏。基本上,我希望地圖尊重這樣一個事實,即有一個div懸停在它上面,當我請求並平移到邊界框時考慮到這一點 - 即使邊界框的區域不在div的下面。 – basicallydan 2012-07-10 20:08:25