2013-03-17 24 views
-1

我想存儲Google地圖點擊事件中的特定變量。我想唯一的方法是使用某種類型的後期Ajax調用。唯一的問題是我不知道如何將表單集成到我的活動中。通過Ajax Post或其他存儲變量

google.maps.event.addListener(marker, 'click', (function(marker, i) 
{ 
    return function() 
    { 
     infowindow.setContent("<a href="+SID[i].innerHTML+">" 
           + lis[i].innerHTML+" </a?>"+"<br/>" 
           + "<a href='#' id='directions' >Get Directions </a>"); 

     infowindow.open(map, marker);     
    } 
}) 
    (marker, i)); 

所以當我點擊一個特定的標記我想存儲標記位置,這將是SID [i]。稍後在同一頁面中,我將使用存儲的變量。

感謝

回答

1

只要頁面不重裝,你可以存儲使用下列任何一個變量:

  • 作用域JS變量
  • HTML5本地存儲(持久性,將頁面上工作刷新爲好)
  • jQuery的數據屬性

甲作用域JS變量例如

(function($) 
{ 
    var storedMarker; 

    $(function() 
    { 
     google.maps.event.addListener(marker, 'click', (function(marker, i) 
     { 
      storedMarker = marker; 

      //continue with click logic 
      ... 
     })(marker, i)); 

     // Do something with stored marker 
     $('.useStoredMarker').click(function(event) 
     { 
      if (storedMarker instanceof google.maps.Marker) 
      { 
       // storedMarker exists do something with it 
      } 
      else 
      { 
       // Marker doesnt exist show error or do nothing 
      } 
     }); 

    }); 

})(jQuery); 

HTML 5本地存儲

// Instead of storing variable in JS you can use this (HTML5 only) 
localStorage.setItem("clickedMarker", marker); 

// Retrieving it 
var clickedMarker = localStorage.getItem("clickedMarker"); 

jQuery的數據屬性

// Assign the marker to a DOM elements data attribute 
$('#clickedMarkers').data('marker', marker); 

// Retrieving it 
var clickedMarker = $('#clickedMarkers').data('marker'); 
+0

大這個問題的答案。是否有任何特定方法被認爲是更好的做法 – agconti 2013-08-21 14:31:25

+1

@agconti這確實是一個偏好問題。 jQuery是一個需要包含的庫,因此不能被認爲是所有最終的解決方案,但JS變量解決方案可能會更好,但更詳細。舊版瀏覽器不支持HTML5本地存儲,因此再也無法一直信任(尚未)。目前,如果我不在網站中大量使用jQuery,我會使用JS local vars。 – 2013-08-21 16:53:57

相關問題