2016-05-31 3 views
-1

Google Maps API3を使用して、ジオコーディングが逆の経度と緯度座標に基づいてGoogleマップにマーカーを配置しています。Googleマップのジオコード位置をPHP変数として保存しようとしています

latとlngに基づいて、マップはアドレスを見つけてそれを正しく表します。しかし、私はその特定のアドレスを物事のPHP側に送り返す必要があります。そして私はちょうど方法を知らないのですか?私はAjaxリクエストを使用しようとしましたが、間違っていると思います。

この関数は(.jsファイル)のようになります。(

function geocodeLatLng(geocoder, map, infowindow) 
{ 
    result.forEach(function(entry) { 
     var latlng = {lat: parseFloat(entry.lat), lng: parseFloat(entry.lng)}; 
     geocoder.geocode({'location': latlng}, function(results, status) 
     { 
      if (status === google.maps.GeocoderStatus.OK) 
      { 
       if (results[1]) 
       { 
        var marker = new google.maps.Marker({ 
          position: latlng, 
          map: map 
         }); 
        infowindow.setContent(results[1].formatted_address); 
        infowindow.open(map, marker); 

        // send som data 
        var xhttp; 
        if (window.XMLHttpRequest) 
        { 
         xmlhttp=new XMLHttpRequest(); 
        } 
        else 
        { 
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        var PageToSendTo = "article.php?"; 
        var markerLocation = results[1].formatted_address; 
        var VariablePlaceholder = "location="; 
        var UrlToSend = PageToSendTo + VariablePlaceholder + markerLocation; 
        xmlhttp.open("GET", UrlToSend, false); 
        xmlhttp.send(); 

       } 
       else 
       { 
        window.alert('No results found'); 
       } 
      } 
      else 
      { 
       window.alert('Geocoder failed due to: ' + status); 
      } 
     }); 

    }); 
} 

のvar markerLocation私はPHP変数に格納する必要があるデータが含まれていますが、私はそれを全体で取得する方法を知りませんjsからphpまで)正しく

そして、これは、サーバー側のPHPファイル(article.php)です:

<?php 
require_once 'config.php'; 
require_once 'src/articleLogic.php'; 

$id = $_GET['id']; 

$sql = "SELECT * FROM blog WHERE id=$id"; 
$result = db_select($sql); 
?> 

<script type="text/javascript"> 
// pass PHP variable declared above to JavaScript variable 
var result = <?php echo json_encode($result) ?>; 
</script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
<script type="text/javascript" src="js/map_article.js"></script> 
<script async defer src="https://maps.googleapis.com/maps/api/js?key=myAPIkey&callback=initMap"></script> 
<body> 

<?php echo $navbar; ?> 

<div id="map"> 
</div> 

<?php getArticle(); ?> 

<div id="photos"> 
<?php getFlickrPhotos(); ?> 
</div> 

<?php 
// Testing the jquery get-method 
if(isset($_GET['location'])) 
    { 
     echo $_GET['location']; 
    } 
    else 
    { 
     echo "It didnt work"; 
    } 
?> 
</body> 

</html> 

編集:コードは、障害のあるajaxrequestで更新されました。

+1

試したAJAXリクエストが表示されますか?私はあなたがどこに間違っていたかを見ることができれば、これをすべて並べ替えるのを手伝ってくれると嬉しいです。 – Ohgodwhy

+0

はい、私の悪いです。関数にAJAXリクエストの試行を追加しました。コメントの下に/ /いくつかのデータを送信します。 これはコンソールが私に通知するものです: メインスレッド上の同期XMLHttpRequestは、エンドユーザーの経験に有害な影響を与えるため、非推奨です。詳細については、https://xhr.spec.whatwg.org/を参照してください。 – Stim

答えて

0

jQuery get関数を使用します。あなたはjQueryライブラリを必要とする:

コード以下
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 

と場所あなたがmarkerLocation変数を作成した直後:

$.get('your.php?location='+markerLocation, function(data){ 
    //what to do on success 
}); 

そして、PHPスクリプトで値が$_GET['location']になります。

+0

これを追加し、PHP側で$ _GET ['location']をエコーし​​ようとしました...しかし、まだ未定義です。何か不足していますか? – Stim

+0

@Stimクライアント側のスクリプトは大丈夫です。あなたのPHPスクリプトを投稿できますか? – cdm

+0

最初の投稿にPHPコードを追加しました。 – Stim

関連する問題