2015-08-25 2 views
0

Мне нравится передавать переменную JS 'latlng' в переменную php, но она не работает. В промежутке он работает нормально. Переменная PHP в конце кода возвращает '[объект HTMLSpanElement] и Corret мое текущее местоположениеВозвращает переменную js как переменную php

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var map; 
    var geocoder; 
    var centerChangedLast; 
    var reverseGeocodedLast; 
    var currentReverseGeocodeResponse; 


    function initialize() { 

     var myOptions = { 
      zoom: 16, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
     geocoder = new google.maps.Geocoder(); 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       var latlng = new google.maps.LatLng(position.coords.latitude, 
        position.coords.longitude); 
       map.setCenter(latlng); 
      }, function() { 
       handleNoGeolocation(true); 
      }); 
     } else { 
      // Browser doesn't support Geolocation 
      handleNoGeolocation(false); 
     } 

     setupEvents(); 
     centerChanged(); 
    } 

    function handleNoGeolocation(errorFlag) { 
     if (errorFlag) { 
      var content = 'Error: The Geolocation service failed.'; 
     } else { 
      var content = 'Error: Your browser doesn\'t support geolocation.'; 
     } 

     var options = { 
      map: map, 
      position: new google.maps.LatLng(60, 105), 
      content: content 
     }; 

     var infowindow = new google.maps.InfoWindow(options); 
     map.setCenter(options.position); 
    } 

    function setupEvents() { 
     reverseGeocodedLast = new Date(); 
     centerChangedLast = new Date(); 

     setInterval(function() { 
      if ((new Date()).getSeconds() - centerChangedLast.getSeconds() > 1) { 
       if (reverseGeocodedLast.getTime() < centerChangedLast.getTime()) 
        reverseGeocode(); 
      } 
     }, 1000); 

     google.maps.event.addListener(map, 'zoom_changed', function() { 
      document.getElementById("zoom_level").innerHTML = map.getZoom(); 
     }); 

     google.maps.event.addListener(map, 'center_changed', centerChanged); 

     google.maps.event.addDomListener(document.getElementById('crosshair'), 'dblclick', function() { 
      map.setZoom(map.getZoom() + 1); 
     }); 

    } 

    function getCenterLatLngText() { 
     return '(' + map.getCenter().lat() + ', ' + map.getCenter().lng() + ')'; 
    } 

    function centerChanged() { 
     centerChangedLast = new Date(); 
     var latlng = getCenterLatLngText(); 
     document.getElementById('latlng').innerHTML = latlng; 
     document.getElementById('formatedAddress').innerHTML = ''; 
     currentReverseGeocodeResponse = null; 
    } 

    function reverseGeocode() { 
     reverseGeocodedLast = new Date(); 
     geocoder.geocode({ 
      latLng: map.getCenter() 
     }, reverseGeocodeResult); 
    } 

    function reverseGeocodeResult(results, status) { 
     currentReverseGeocodeResponse = results; 
     if (status == 'OK') { 
      if (results.length == 0) { 
       document.getElementById('formatedAddress').innerHTML = 'None'; 
      } else { 
       document.getElementById('formatedAddress').innerHTML = results[0].formatted_address; 
      } 
     } else { 
      document.getElementById('formatedAddress').innerHTML = 'Error'; 
     } 
    } 


    function geocode() { 
     var address = document.getElementById("address").value; 
     geocoder.geocode({ 
      'address': address, 
      'partialmatch': true 
     }, geocodeResult); 
    } 

    function geocodeResult(results, status) { 
     if (status == 'OK' && results.length > 0) { 
      map.fitBounds(results[0].geometry.viewport); 
     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
    } 

    function addMarkerAtCenter() { 
     var marker = new google.maps.Marker({ 
      position: map.getCenter(), 
      map: map 
     }); 

     var text = 'Lat/Lng: ' + getCenterLatLngText(); 
     if (currentReverseGeocodeResponse) { 
      var addr = ''; 
      if (currentReverseGeocodeResponse.size == 0) { 
       addr = 'None'; 
      } else { 
       addr = currentReverseGeocodeResponse[0].formatted_address; 
      } 
      text = text + '<br>' + 'address: <br>' + addr; 
     } 

     var infowindow = new google.maps.InfoWindow({ 
      content: text 
     }); 

     google.maps.event.addListener(marker, 'click', function() { 
      infowindow.open(map, marker); 
     }); 
    } 
</script> 


<body onLoad="initialize()"> 
    <h1 style="display:none;">APP Google Maps - Localizar Latitude/Longitude</h1> 
    <div style="position: relative; width:980px; left:50%; margin-left:-490px; height:90px;"> 
     <div style="position:absolute; left:0px; top:20px;"> 
     </div> 

     <div style="position:absolute; right:0px; top:30px;"> 
      Localizar Região: 
      <input type="text" class="form_contato" id="address" style="width:300px; margin-right:15px;" /> 

      <input type="button" value="Procurar" onClick="geocode()" class="form_contato"> 
      <input type="button" value="Adicionar ponto no mapa" onClick="addMarkerAtCenter()" class="form_contato" /> 
     </div> 
    </div> 
    <div style="position: relative; width:980px; left:50%; margin-left:-490px; height:40px; line-height:40px; text-align:center;" class="Caecilia17">Para realizar a pesquisa digite no formulario acima o endereço desejado.</div> 
    <div style="background:#ffffff;"> 
     <div id="map"> 
      <div id="map_canvas" style="width:100%; height:500px"></div> 

      <div id="crosshair"></div> 
     </div> 
    </div> 
    <div style="position: relative; width:980px; left:50%; margin-left:-490px; height:90px; margin-top:20px; line-height:20px;" class="arial15cinza"> 
     Latitude/Longitude: <span id="latlng"></span> 
     <br />Endereço: <span id="formatedAddress"></span> 
     <br />Nivel do zoom: <span id="zoom_level"></span> 
     <br /> 
<?php 
//escrevendo a variável JS pelo PHP 
$latlng = echo "<script>document.write(latlng);</script>" 
?> 
    </div> 
</body> 
+1

PHP - это язык, который работает на вашем сервере. Его задача состоит в том, чтобы * генерировать * страницу, содержащую HTML/JavaScript/CSS, для отправки в ваш браузер. После того, как эта страница будет отправлена ​​в браузер, PHP завершит работу. Затем браузер должен запустить JavaScript и отобразить HTML. Если вы хотите «отправить» что-то на PHP, вам нужно сделать новый запрос на сервер (будь то через '

' POST, AJAX или каким-либо другим способом). –

+1

P.S. 'echo' не имеет возвращаемого значения, поэтому делает' $ var = echo ''; 'ничего не делает для' $ var' (и я думаю, что это даже синтаксическая ошибка). P.P.S. *** Не используйте *** document.write, лучше добавлять текст на страницу (если страница полностью загружена, она стирает всю страницу до «записи»). –

+0

Используйте ajax для отправки переменной в файл php, если вы собираетесь сохранить результат в базе данных. – mdamia

ответ

0

Одно решение передать переменная JavaScript в PHP страницу посредством строки запроса. Вы могли бы сделать что-то вроде:

var newVar = "somevalue"; 
window.location.href = "http://stackoverflow.com?variable=" + newVar; 

, а затем захватить его на странице PHP вы передаете его нравится

$phpVariable = $_GET['variable']; 

Я надеюсь, что это помогает, и Google на стороне сервера против стороне клиента кодирования чтобы помочь лучше понять, как они взаимодействуют.

Смежные вопросы