いくつかの関数を使用して、マーカーの位置から特定の距離内にあるマーカーのみの距離を計算して表示しようとしていますが、ページが読み込まれるとすぐに関数がキャストされるため、誤った値が使用されています
データベースからマーカーを生成するための関数は次のとおりです。
<?php while($stmt -> fetch()) { ?>
var longi = "<?php echo $gLongitude; ?>";
var lati = "<?php echo $gLatitude; ?>";
var title = "<?php echo $gTitle; ?>";
createMarker(lati, longi, title);
<?php } $stmt -> close(); $mysqli -> close();?>
次に createMarker を呼び出します
function createMarker(lati, longi, title) {
var latLongMarker = new google.maps.LatLng(lati, longi);
marker = new google.maps.Marker({
position: latLongMarker,
map: map,
title: title
});
arrMarker.push(marker);
marker.setMap(null);
setMarker(latLongMarker);
}
次に setmarker を呼び出します
function setMarker(position) {
console.log(arrMarker.value);
for (var i = 0; i < arrMarker.length; i++) {
var latLong = arrMarker[i].getPosition();
distance = google.maps.geometry.spherical.computeDistanceBetween(latLong, position);
if (distance < 4000) {
addMarker(arrMarker[i].getPosition());
}
}
}
問題は、以下を使用して地理位置情報が設定される前に呼び出され続けることです。
function locateMe() {
if (navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
map.setCenter(initialLocation);
map.setZoom(15);
setMarkerPosition(position.coords.latitude,position.coords.longitude);
}, function() {
handleNoGeolocation(browserSupportFlag);
});
}
}