Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Google Maps API (https://javascript.ru/forum/events/71592-google-maps-api.html)

Nexus 30.11.2017 12:30

Нашел ответ на 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>

laimas 30.11.2017 12:56

А не проще value = e.latLng.lat() + "," + e.latLng.lng() ? )

JeeOpp 30.11.2017 13:45

Цитата:

Сообщение от Nexus (Сообщение 471656)
Нашел ответ на 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>

ага, надо было пояснить что я хотел, однако тут и без меня разобрались

я хотел чтобы когда пользователь открывает страницу с картой, он мог двигать создавшийся там маркер, и при нажатии кнопки
<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?

Nexus 30.11.2017 13:51

JeeOpp, обратите внимание на 23 строку.

JeeOpp 30.11.2017 14:42

для потомков
<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, время: 09:57.