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で更新されました。
試したAJAXリクエストが表示されますか?私はあなたがどこに間違っていたかを見ることができれば、これをすべて並べ替えるのを手伝ってくれると嬉しいです。 – Ohgodwhy
はい、私の悪いです。関数にAJAXリクエストの試行を追加しました。コメントの下に/ /いくつかのデータを送信します。 これはコンソールが私に通知するものです: メインスレッド上の同期XMLHttpRequestは、エンドユーザーの経験に有害な影響を与えるため、非推奨です。詳細については、https://xhr.spec.whatwg.org/を参照してください。 – Stim