私のページでは、ロード時にあなたの場所を取得してマーカーを設定し、データベースからすべてのマーカーをロードしてマップに設定したいのですが、それらの場所から 1 km 以内にあるマーカーのみをロードしたいです。位置。設定したいのですが、ちょっと面倒です。
したがって、マーカーは次のようにデータベースからロードされます。
<?php while($stmt -> fetch()) { ?>
var longi = "<?php echo $gLongitude; ?>";
var lati = "<?php echo $gLatitude; ?>";
var title = "<?php echo $gTitle; ?>";
setMarker(lati, longi, title);
<?php } $stmt -> close(); $mysqli -> close();?>
そして、setMarker 関数は次のように呼び出します。
function setMarker(lati, longi, title) {
var latLongMarker = new google.maps.LatLng(lati,longi);
marker = new google.maps.Marker({
position: latLongMarker,
map: map,
draggable: false,
title: title
});
arrMarkers.push(marker);
}
それはすべてうまく機能し、データベースからすべてのマーカーをマップにロードしますが、私から 1 km 離れたマーカーだけをロードするにはどうすればよいでしょうか? computeDistanceBetween() について読みましたが、命を救う例が見つかりません。事前に感謝します。
私はそれを行う方法を考え出しました。これは、将来これを探している人のために、ここで処理するのがはるかに簡単で高速になりました。
<?php while($stmt -> fetch()) { ?>
var longi = "<?php echo $gLongitude; ?>";
var lati = "<?php echo $gLatitude; ?>";
var title = "<?php echo $gTitle; ?>";
var content = 'Bus arrives at: ' + "<?php echo $gWeekdayDay; ?>";
database.push({latitude: lati, longitude: longi, markerTitle: title, content: content});
<?php } $stmt -> close(); $mysqli -> close();?>
for (var i = 0; i < database.length; i++) {
createMarker(database[i].latitude, database[i].longitude, database[i].markerTitle, initialLocation,
database[i].content);
}
function createMarker(lati, longi, title, myPosition, content) {
var latLongMarker = new google.maps.LatLng(lati, longi);
distanceCompare.push({position: latLongMarker, markerTitle: title});
setMarker(myPosition, latLongMarker, title, content);
}
function setMarker(myPosition, latLongMarker, title, content) {
distance = google.maps.geometry.spherical.computeDistanceBetween(latLongMarker, myPosition);
console.log('Distance of '+latLongMarker+ 'and original position' + myPosition + 'Is equal to '+distance);
updateResults();
if (distance < setDistance) {
addMarker(latLongMarker, title, content);
stopsfound++;
updateResults();
console.log(content);
}
}
function addMarker(position, title, content) {
console.log('Adding Marker ' + content);
marker = new google.maps.Marker({
position: position,
map: map,
title: title
});
bindInfoWindow(marker, content);
markersArray.push(marker);
}