2013-10-29 96 views
0

嗯,我有一個谷歌地圖,所有的經度來自數據庫,它顯示每個位置與標記。標記是可移動的更新mysql數據庫時谷歌地圖標記移動

現在我想更新數據庫的緯度和經度,當我移動每個標記。是否可以使用PHP或JavaScript或Ajax。你能給我一個解決方案或建議嗎?謝謝。

Javascript代碼:

<script type="text/javascript" src="jquery-1.4.4.min.js"></script>   
<script src="http://maps.googleapis.com/maps/api/js?sensor=false" 
type="text/javascript"></script> 
<script type="text/javascript" src="gmap3.js"></script>  

<script type="text/javascript"> 
    $(function(){ 
    $('#map').gmap3({ 
     map:{ 
     options:{ 
      center:[23.709920999999998,90.40714299999999], 
      zoom: 15 
     } 
     }, 
     marker:{ 
     values:[    
     <?php 
     $sql = mysql_query("select * from parkings where userid != '0'"); 
     while($res = mysql_fetch_array($sql)){ 
          $id = $res['locId']; 
      $lat = $res['latitude']; 
      $long = $res['longitude'];    
      ?> 
      {address:"<?php echo $lat;?>,<?php echo $long;?>"}, 
      <?php 
      } 
     ?>        
     ], 
     options:{ 
      draggable: true 
     }, 
     events: { 
      click: function(marker, event, context){ 
      markerSelected(context.id); 
      } 
     } 
     } 
    }); 

    $("#bcolor").click(function(){ 
     var marker = $('#map').gmap3({get: $("#markerId .value").text() }); 
     marker.setIcon(marker.getIcon() ? "" : "http://maps.google.com/mapfiles 
/marker_green.png"); 
    }); 

    $("#bremove").click(function(){ 
     $('#map').gmap3({clear: $("#markerId .value").text() }); 
     $("#data").hide(); 
     $("#title").show(); 
    }); 

    }); 

    function markerSelected(id){ 
    var marker = $('#map').gmap3({get:id}); 

    $("#markerId .value").text(id); 
    $("#latitude .value").text(marker.getPosition().lat()); 
    $("#longitude .value").text(marker.getPosition().lng()); 

    $("#data").show(); 
    $("#title").hide(); 
    } 

</script> 

HTML正文部分代碼

<div id="map" class="gmap3"></div> 

當我點擊每個標記它的顯示經緯度以下部分:

<div id="latitude"> 
     <span class="label">Latitude : </span> 
     <span class="value"></span> 
     </div> 
     <div id="longitude"> 
     <span class="label">Longitude : </span> 
     <span class="value"></span> 
     </div> 

回答

0

當您移動標記時,您可以使用jQuery獲取新的緯度和經度值。

只需添加一個ID包含的值標籤:

<div id="latitude"> 
    <span class="label" id="gmap_latitude">Latitude : </span> 
    <span class="value"></span> 
</div> 
<div id="longitude"> 
    <span class="label" id="gmap_longitude">Longitude : </span> 
    <span class="value"></span> 
</div> 

因此,你可以很容易地使用jQuery選擇他們,並得到他們的價值觀。

現在,爲了更新數據庫,我建議創建一個PHP腳本更新數據庫,並在每次更新標記時使用帶有jQuery加載函數的AJAX調用(http://api.jquery.com/jQuery.post/)。您可以使用jQuery事件處理程序來跟蹤這個。

+1

不錯的主意,但只是添加監聽器到標記的放置事件是不是更容易? – pythonian29033

+0

@Theox,感謝您的好主意!首先,每個經緯度都有唯一的Mysql數據庫ID(locId)。所以我認爲當標記移動時我必須得到每個ID。對 ?怎麼樣 ? – Creativeartbd

+0

我認爲你可以使用pythonian29033的想法來聽標記的放置事件。然後,您可以獲取移動的標記的ID,也可能獲得其經緯度,然後執行AJAX調用。 – Theox