0

我使用的是jQuery 1.7和最新的jQuery Mobile以及Google Maps Places庫。第二個標記&map.fitBounds()與jQuery的移動造成巨大的縮小

我面臨的問題類似於this關於多段線的問題,除了我沒有使用(並且如果可能,寧願不使用)任何插件。

單擊一個頁面上的按鈕將地圖填充到同一文檔中的另一個頁面上。

我試圖儘可能清晰和可以放大的,通過利用下面的代碼片斷顯示我所有的搜索結果..

var bounds = new google.maps.LatLngBounds(); 
for(var i=0; i<results.length; i++) 
{ 
    var resCoOrds = new google.maps.LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng()); 
    var marker = new google.maps.Marker({ 
     position : resCoOrds, 
     map : myMap, 
     icon: myMarkerIcon 
    }); 

    makerList.push(marker); 

    google.maps.event.addListener(marker, 'click', function() 
    { 
     var resInfoWindow = new google.maps.InfoWindow({content:liContent}); 
     resInfoWindow.open(map, this); 
    }); 


    bounds.extend(resCoOrds); 
    myMap.fitBounds(bounds); 
} 

我的問題是上面的最後一行的結果!

第一個標記的添加如預期的那樣工作,但添加第二個標記後,地圖變得放大,使我的所有搜索結果一起出現在地圖上的一個小點上,迫使用戶放大,不爲我的目的..

這縮小時不

  • 不使用jQuery Mobile的相同的代碼發生!

  • 的地圖是同一頁的搜索按鈕填充與標記

任何幫助或指針是非常讚賞在地圖上..提前

謝謝..

問候,

阿舒

+0

什麼是newMarkerCoords?假設它是一個google.maps.LatLng對象,它是如何創建的?它是否有有效的座標(即它們是數字,而不是字符串)? – geocodezip

+0

對不起,這是一個錯字..有更新代碼.. newMarkerCoords肯定是代碼中創建rescoOrds ..謝謝,Achu – achu

回答

0

想通了......

這裏是我的解決方案:我注意到變焦ISSU如果地圖已經加載並且在我開始添加標記時調用map.fitBounds()時活動頁面上可見,則e不存在。所以我使用地圖的tilesloaded事件來等待地圖準備就緒,然後添加標記& fit bounds。

下面是我使用的代碼...

function searchCallback(results, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) 
    { 
     if (results.length) 
     { 
      $.mobile.changePage("#mapview"); 
      google.maps.event.addListenerOnce(map, "tilesloaded", function() 
      { 
       var bounds = new google.maps.LatLngBounds(); 
       for (var i = 0; i < results.length; i++) 
       { 
        /* code to add markers */ 
        bounds.extend(results[i].geometry.location); 
       } 
       map.fitBounds(bounds); 
      } 
     } 
    } 
} 

這種方法解決我的問題,但如果任何人有更好的解決方案,請讓我知道..

謝謝..

0

你(另)一個錯字在你的代碼:

var resCoOrds = new google.maps.LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng; 

應該是:

var resCoOrds = new google.maps.LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng()); 

儘管它會很簡單,如果你只是使用results[i].geometry.location,因爲它已經是一個google.maps.LatLng:

var resCoOrds = results[i].geometry.location 
+0

謝謝,已更新代碼.. – achu

+0

這是否意味着它是您的另一個錯字問題,而不是在你的代碼中的問題?這對我有用,也許你可以爲代碼/問題提供更多的上下文,也許可以通過從你有問題的版本中複製它,或者創建一個展示問題的jsfiddle,所以我們不會浪費時間校對你的問題。 – geocodezip

+0

嗨@geocodezip,我已經將我的完整代碼放在[link](http://jsfiddle.net/C25FP/1/)。 (我以前從未使用過jsfiddle,並且無法使此代碼在jsFiddle中運行..:-s ..)但是,希望這有助於......在Firefox,Chrome和Safari在桌面和Android上發生問題瀏覽器。謝謝,阿丘 – achu

相關問題