Google Maps API
Всем привет, такой вопрос
есть скрипт
<script>
function initMap() {
var centerLatLng = new google.maps.LatLng(53.907761, 27.567160);
var mapOptions = {
center: centerLatLng, // Координаты центра мы берем из переменной centerLatLng
zoom: 12 // Зум по умолчанию. Возможные значения от 0 до 21
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var marker = new google.maps.Marker({
position: centerLatLng,
map: map,
draggable:true,
title:"Drag me!"
});
}
google.maps.event.addDomListener(window, "load", initMap);
</script>
Есть код отправки данных на сервер:
<form action="Controller" method="post">
<input type="hidden" name="method" value = "callTaxi">
<input type="hidden" name="position" value="">
<button type="submit">Заказать такси</button>
</form>
как из скрипта вытащить позицию маркера и засунуть его в запрос? |
JeeOpp, Может так?
<form action="Controller" method="post">
<input type="hidden" name="method" value = "callTaxi">
<input type="hidden" name="position" value="">
<button type="submit">Заказать такси</button>
</form>
<script>
var centerLatLng=[53.907761, 27.567160];
document.querySelector('input[name="position"]').value=centerLatLng.join(',');
function initMap() {
var centerLatLng = new google.maps.LatLng(centerLatLng.join(', '));
var mapOptions = {
center: centerLatLng, // Координаты центра мы берем из переменной centerLatLng
zoom: 12 // Зум по умолчанию. Возможные значения от 0 до 21
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var marker = new google.maps.Marker({
position: centerLatLng,
map: map,
draggable:true,
title:"Drag me!"
});
}
google.maps.event.addDomListener(window, "load", initMap);
</script>
|
Nexus,
но если в скрипте явно указывается значение переменной, то зачем же так напрягаться, их можно сразу таким же образом в форме прописать так ведь? Другой вопрос, это выбор координат пользователем и этот выбор в форму, но данного в коде не наблюдается и вопросом не оговаривается. ) |
laimas,
Цитата:
|
Цитата:
|
Цитата:
|
var centerLatLng = new google.maps.LatLng(53.907761, 27.567160);
Это вы отправляете на сервер, а оно прописано явно, что не мешает сделать тоже самое и в форме. Что там далее происходит не важно. Если сервер задает координаты, размещая карту, то тем более серверу ничего не нужно, он и так знает. Разве это не странно? |
laimas, обратите внимание на параметры маркера, его можно перемещать)
|
Цитата:
|
laimas, стыдно признавать, но я не смог найти адекватной документации к api google maps.
Вероятно на маркер можно повесить обработчик события "drag", но как получить координаты центра маркера... У api yandex maps доки куда приличнее, даже не ожидал такого. |
Нашел ответ на stackoverflow.
<form action="Controller" method="post">
<input type="hidden" name="method" value = "callTaxi">
<input type="hidden" name="position" value="">
<button type="submit">Заказать такси</button>
</form>
<script>
function initMap() {
var centerLatLng = new google.maps.LatLng(53.907761, 27.567160);
var mapOptions = {
center: centerLatLng, // Координаты центра мы берем из переменной centerLatLng
zoom: 12 // Зум по умолчанию. Возможные значения от 0 до 21
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var marker = new google.maps.Marker({
position: centerLatLng,
map: map,
draggable:true,
title:"Drag me!"
}),
dragHandler=function(e){
document.querySelector('input[name="position"]').value=[e.latLng.lat(),e.latLng.lng()].join(',');
};
marker.addListener('drag',dragHandler);
marker.addListener('dragend',dragHandler);
}
google.maps.event.addDomListener(window, "load", initMap);
</script>
|
А не проще value = e.latLng.lat() + "," + e.latLng.lng() ? )
|
Цитата:
я хотел чтобы когда пользователь открывает страницу с картой, он мог двигать создавшийся там маркер, и при нажатии кнопки <form action="Controller" method="post"> <input type="hidden" name="method" value = "callTaxi"> <input type="hidden" name="position" value=""> <button type="submit">Заказать такси</button> </form> на сервер отправлялся бы запрос с текущими координатами маркера,, однако в атрибут value нужно как-то всунуть переменную из скрипта <input type="hidden" name="position" value=""> или же есть возможность как-то в скрипте засунуть переменную в request? |
JeeOpp, обратите внимание на 23 строку.
|
для потомков
<form action="Controller" method="post">
<input type="hidden" name="method" value = "callTaxi">
<input type="hidden" name="position">
<button type="submit">Заказать такси</button>
</form>
аттрибут value в Position перезаписывал координаты на пробел, я его убрал. И если маркер не трогать, то передаст на сервер пусто(не null) Всем спасибо! |
| Часовой пояс GMT +3, время: 05:59. |