Распечатать координаты из скрипта геокодирования

Я хочу распечатать координаты, рассчитанные с помощью javascript геокодирования (сделанного с помощью Google API V3), как я могу это сделать??

а затем, как я могу передать эти значения двум переменным ($Lat и $Long), которые находятся в файле php, который генерирует карту Google, созданную в Api V2??

Спасибо.

это мой код javascript:

    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=HERE MY API KEY" type="text/javascript"></script>


<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<script type="text/javascript" src="http://code.google.com/apis/gears/gears_init.js"></script>

<script type="text/javascript">

    function getLocale(){
      if ( navigator ) {
        if ( navigator.userLanguage ) {
            return navigator.userLanguage.toLowerCase();
        }
        else if ( navigator.language ) {
            return navigator.language.toLowerCase();
        }
        else if ( navigator.browserLanguage ) {
            return navigator.browserLanguage.toLowerCase();
        }
        else if ( navigator.systemLanguage ) {
            return navigator.systemLanguage.toLowerCase();
        }
      }
      return "unknown";
    }

    var locales = new Object();
    locales["en-gb"] = {lat:54.559322587438636, lng:-4.1748046875, location:"United Kingdom"};
    locales["en-us"] = {lat:38.41055825094609, lng:-100.37109375, location:"USA"};
    // TODO - more locales

    function showMap(latLong, zoom){
      var options = {
        zoom: zoom,
        center: latLong,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      var map = new google.maps.Map(document.getElementById("map"), options);
      var marker = new google.maps.Marker({
          position: latLong,
          map: map,
          title:"Your location"
      });
    }

    function TryGoogleLoader(){
      if (google.loader.ClientLocation != null) {
        var address = google.loader.ClientLocation.address;
        var yourLocation = address.city + ", " + address.region + ", " + address.country;

        document.getElementById("location").innerHTML = "Your location (using Google loader) is " + yourLocation;
        var latLong = new google.maps.LatLng(google.loader.ClientLocation.latitude,
          google.loader.ClientLocation.longitude);
        showMap(latLong, 12);
        }
        else {
        // map locale to location
        var locale = getLocale();
        if (locales[locale] != null) {
          var latLong = new google.maps.LatLng(locales[locale].lat, locales[locale].lng);
          document.getElementById("location").innerHTML =
            "Guessing your location based on your locale - " + locales[locale].location;
          showMap(latLong, 5);
        }
        else {
          document.getElementById("location").innerHTML = "Your location can not be found - locale is " + locale;
        }
      }
    }

    function TryGoogleGears(){
      if (google.gears) {
        // Try Google Gears Geolocation
        var geo = google.gears.factory.create('beta.geolocation');
        geo.getCurrentPosition(function(position) {
          var latLong = new google.maps.LatLng(position.latitude, position.longitude);
          document.getElementById("location").innerHTML = "Found location via Google Gears";
          showMap(latLong, 15);
        }, function() {
          TryGoogleLoader();
        });
      }
      else
        TryGoogleLoader();
    }

    window.onload = function() {

      // try W3C standard approach
      var geoTimeout = 10000;
      var timeOuthandler = setTimeout("TryGoogleGears()", geoTimeout);
      if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
          clearTimeout(timeOuthandler);
          var latLong = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
          document.getElementById("location").innerHTML = "Found location via W3C standard";
          showMap(latLong, 15);
        }, function() {
          // something went wrong, try Google Gears
          clearTimeout(timeOuthandler);
          TryGoogleGears();
        }, {timeout:geoTimeout});
      }
      else
        TryGoogleGears();
    }

</script>

как я могу напечатать с кодом предупреждения значение «var latLong»? как я могу передать это значение набору переменных php, таких как $lat и $long? Спасибо.


person Luca Arosio    schedule 24.06.2011    source источник


Ответы (1)


В функции W3C вы можете сделать это в случае успеха

document.getElementById("location").innerHTML = position.coords.latitude +", "+position.coords.longitude;

В функции TryGoogleGears вы можете сделать это в случае успеха

document.getElementById("location").innerHTML = position.latitude +", "+position.longitude;

Чтобы передать пару LatLong обратно в PHP, вам нужно будет использовать XMLHTTPRequest или что-то подобное. Это связано с тем, что PHP — это скрипт на стороне сервера, который выполняется раньше, чем JavaScript, который запускается на клиенте. Итак, чтобы сообщить PHP что-то, вам нужно либо загрузить новую страницу, либо передать данные из JavaScript в PHP с помощью заголовков, переменных GET или POST. Вы можете либо загрузить эту страницу обычным способом в браузере, и ваши пользователи увидят перенаправление, либо загрузить ее в фоновом режиме с помощью XMLHTTPRequest.

person christiangeek    schedule 27.06.2011