Avatar billede celfa Nybegynder
27. februar 2014 - 10:32 Der er 5 kommentarer og
1 løsning

JavaScript array til PHP - Json

Hej.
Jeg har desværre ikke arbejdet særlig meget med Javascript og JSON. Men skal bruge google maps api til at geocode en længdegrad og breddegrad. De data som den outputter ville jeg gerne have have i et array som jeg kan bruge med PHP.

<?php
$lat = "56.14241615";
$long = "9.02564712";
?>

<!DOCTYPE html>
<html>
  <head>
    <title>Distance Matrix service</title>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }

      #map-canvas {
        height: 100%;
        width: 50%;
      }
      #content-pane {
        float:right;
        width:48%;
        padding-left: 2%;
      }
      #outputDiv {
        font-size: 11px;
      }
    </style>
    <script>
var map;
var geocoder;
var bounds = new google.maps.LatLngBounds();
var markersArray = [];

var origin1 = new google.maps.LatLng(<?php echo $lat;?>, <?php echo $long;?>);

var destinationA = 'Min adresse, Aarhus';

var destinationIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=D|FF0000|000000';
var originIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=O|FFFF00|000000';

function initialize() {
  var opts = {
    center: new google.maps.LatLng(55.53, 9.4),
    zoom: 10
  };
  map = new google.maps.Map(document.getElementById('map-canvas'), opts);
  geocoder = new google.maps.Geocoder();
}

window.onload = function calculateDistances(){
    var service = new google.maps.DistanceMatrixService();
  service.getDistanceMatrix(
    {
      origins: [origin1],
      destinations: [destinationA],
      travelMode: google.maps.TravelMode.DRIVING,
      unitSystem: google.maps.UnitSystem.METRIC,
      avoidHighways: false,
      avoidTolls: false
    }, callback);
};


function callback(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
    alert('Error was: ' + status);
  } else {
    var origins = response.originAddresses;
    var destinations = response.destinationAddresses;
    var outputDiv = document.getElementById('outputDiv');
    outputDiv.innerHTML = '';
    deleteOverlays();

    for (var i = 0; i < origins.length; i++) {
      var results = response.rows[i].elements;
      addMarker(origins[i], false);
      for (var j = 0; j < results.length; j++) {
        addMarker(destinations[j], true);
        outputDiv.innerHTML += origins[i] + ' til ' + destinations[j]
            + ': ' + results[j].distance.text + ' tid til destination '
            + results[j].duration.text + '<br>';
      }
    }
  }
}


function addMarker(location, isDestination) {
  var icon;
  if (isDestination) {
    icon = destinationIcon;
  } else {
    icon = originIcon;
  }
  geocoder.geocode({'address': location}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      bounds.extend(results[0].geometry.location);
      map.fitBounds(bounds);
      var marker = new google.maps.Marker({
        map: map,
        position: results[0].geometry.location,
        icon: icon
      });
      markersArray.push(marker);
    } else {
      alert('Geocode was not successful for the following reason: '
        + status);
    }
  });
}

function deleteOverlays() {
  for (var i = 0; i < markersArray.length; i++) {
    markersArray[i].setMap(null);
  }
  markersArray = [];
}


google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="content-pane">
      <div id="inputs">
        <pre>
var origin1 = new google.maps.LatLng(56.09002, 10.13374);
var destinationA = 'Mindet 6, Aarhus';
        </pre>
<?php
$results=json_decode($_POST['results']);
echo $results;
?>
        <p>Fra og til, km og tid</p>
      </div>
      <div id="outputDiv"></div>
    </div>
    <div id="map-canvas"></div>
  </body>
</html>

Dem jeg så er interesseret i er:
results[j].distance.text
results[j].duration.text

Men hvordan gør man lige det? Jeg har læst lidt om json_decode. Håber at der er nogen der kan hjælpe.
Avatar billede jakobdo Ekspert
27. februar 2014 - 10:48 #1
Nu har jeg ikke gennemgået hele din kode. Men du er med på forskellen på javascript og php, ikke?

javascript er clientside.
php er serverside.

Så du kan ikke overføre en javascript værdi direkte til php.
Men det du evt. kan gøre, er at kalde et php script via noget ajax, som så gemmer de værdier du ønsker.
Avatar billede celfa Nybegynder
27. februar 2014 - 10:51 #2
Jo det er jeg. Det er også derfor at jeg er lidt lost.

Er det noget du har noget mere info på?
Avatar billede jakobdo Ekspert
27. februar 2014 - 10:59 #3
Prøv at se her: http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

Der skal du så, når du har fået dit svar (result) kalde "ajax" koden, som så igen kalder et php script.
Og dette php script skal så gemme data et sted. :o)
Avatar billede celfa Nybegynder
21. marts 2014 - 22:12 #4
Hej Jakobdo.

Jeg valgte at lave min løsning radikal anderledes, og slap derfor helt for javascript og alt hvad der hører til clientside.

Smid et svar som tak for din tid :)
Avatar billede jakobdo Ekspert
24. marts 2014 - 08:49 #5
Svar!
Avatar billede jakobdo Ekspert
31. marts 2014 - 09:15 #6
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester