2011-09-26 77 views
2

我有一個項目與谷歌地圖。我想用Zoom inZoom out動作模擬maps.google.com上下文菜單。
google.maps.Map.setZoom()被縮放地圖中心點但在maps.google.com當你在特定的點右鍵單擊並選擇放大/縮小操作,地圖平移,使這一特定點停留在同一個地方。
例如,如果我就在左上角點鼠標右鍵,選擇右鍵菜單Zoom in,那麼這個蓬停留在光標變焦後,不走出去的地圖邊界。
有沒有簡單的方法來實現這個功能?谷歌地圖:放大/縮小到特定點,如在maps.google.com上下文菜單

回答

0

你可以用標記處理它。 我不知道這是否是最有效的方法。

所以你在你當前的鼠標位置添加一個標記(你可以跟蹤你的鼠標光標,對嗎?上次沒有做任何事情) 然後你設置地圖中心到那個標記(我知道,那有一個功能),只需刪除標記。

編輯:哦對不起,我想我誤解了你的問題。 Cuz會和雙擊一個點一樣嗎? 所以,你想擁有的距離鼠標< - >頂部和鼠標< - >留在sceen停留,因爲它與它下面的點,但一個階段進/出更多的放大?

+0

是的,你誤會了,你第二猜測是正確的。如果我用latlng(55.000,38.000)右鍵單擊該點並選擇菜單中的「放大」,則此點將停留在首先右鍵單擊的位置。 – oluckyman

0

的等效問題被問和回答:Zoom toward mouse (eg. Google maps)

我對這個問題的方法是沿着相同的路線,除了我的地圖像素座標都計算相對於地圖(而不是左上角)的中心:

  1. 確定像素偏移您的特定點相對於地圖中心的位置。以像素爲單位的地圖矩形尺寸可以像map.getDiv()。getClientRects()[0]獲得,而中心只是矩形的中心。
  2. 計算放大/縮小後特定點的新像素偏移量。對於谷歌地圖放大所有像素偏移都加倍(對於單個縮放步驟),所以如果您的特定點距離中心[30,40],那麼在正常之後它將從地圖中心[60,80]放大(或​​在正常之後它將[15,20] 縮小。)
  3. 計算縮放後需要調整地圖中心的多少,以便特定點返回到開始位置。在上述例子中,後在變焦我們需要map.panBy(-30,-40),之後可選地縮小我們需要map.panBy(15,20)。
  4. 應用普通的map.setZoom(縮放),然後計算map.panBy(dX,dY)到recenter。