2014-11-05 37 views
1

包括頭部傳單和jQuery,我有這樣的代碼:設置並拖動單張地圖更新標記表單輸入字段不發送

<form name="formone"> ... 
<div id="clickmap"> 
<div id="map"></div> 

<script type="text/javascript"> 
    var map = L.map('map').setView([34.00, 8.00, 6); 
    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); 
function onMapClick(e) { 
    var lat = (e.latlng.lat); 
    var lng = (e.latlng.lng); 
    var marker = L.marker([lat, lng], {draggable:true}).addTo(map).bindPopup($('<a href="#clickmap">Remove ME</a>').click(function() { map.removeLayer(marker);  })[0]); 

// latnew = marker._latlng.lat; // test   
// latold = document.formone.GPSLatitude.value; // test 
         } 
map.on('click', onMapClick); 

// function simply() {} // test 
</script> 

</div><!-- end clickmap --> 

... 

<input type="text" name="GPSLatitude" onclick="javascript:simply();" value="<?php echo $GPSLatitudeDec; ?>" size="25" maxlength="20" /> 
... 

... </form> 

只需一次單擊,我設置一個標記在地圖上。 在此過程中,我想在提交之前更新輸入字段 。另外,如果我在地圖上拖動標記,則應該更新輸入字段。

而且最後一個標記也可以被刪除, 這樣我就只能處理一個標記。

有人可以給我一個概述,該怎麼做?

我不是在jQuery或Leaflet-libaries中運行。 是否有任何功能解決辦法?

謝謝 羅布

回答

0

如果你有你的頁面上有兩個文本框,如何從onMapClick(E)函數內更新自己的價值?

... 
<p>Latitude: <input id="latInput"> :: Longitude: <input id="lngInput"></p> 
<script> 
... 
function onMapClick(e) { 

... //whatever code you've already put 

document.getElementById('latInput').value = lat; 
document.getElementById('lngInput').value = lng; 
} 
... 
</script> 

編輯:類似的答案在這裏共享,以及:https://stackoverflow.com/a/27272673/4355695,與工作示例:http://plnkr.co/edit/iyMhaoAyllr2uNSOHhS9?p=preview

編輯:制定了完整的解決方案既拖動,點擊,並具有反功能太(用戶輸入的值在表單域中可以移動標記)。它還會記住用戶標記的以前的位置。見 工作示例:http://plnkr.co/edit/PTFlun?p=preview