我正在尝试在 wordpress 安装中获得地理定位功能。基本上发生的情况是,在网站访问者给定位置的半径 x 内的任何项目都将返回到谷歌地图上。这可以正常工作,但前提是半径等于或大于 1 公里。只要给定半径小于 1 公里,半径本身就会正确显示,但不会显示该半径内的数据库项目。最初我也有显示正确半径小于 1 公里的问题,但我通过使用 parseFloat 而不是 parseInt 解决了这个问题。不幸的是,在这方面我的技能远非完美,我可能需要在这里有能力的人的帮助。如果您有想法,请告诉我。此处包含两个涉及的脚本。
if(geoloc){
if(ajaxGeo){
var inputRadius = geoInputRadius.val();
if(!isNaN(inputRadius)){
var radiusInM = parseFloat(geoInputRadius.val()) * 1000;
} else {
var radiusInM = parseInt(geoInputRadius.data('default-value')) * 1000;
}
// autofit by circle
mapObj.circle = {
options: {
center: geoloc,
radius : radiusInM,
visible : {ifset $themeOptions->search->showAdvancedSearchRadius}true{else}false{/ifset},
fillOpacity : 0.15,
fillColor : "#2c82be",
strokeColor : "#2c82be"
}
}
} else {
var radiusInM = parseInt({ifset $geolocationRadius}{$geolocationRadius}{else}100{/ifset}) * 1000;
// autofit by circle
mapObj.circle = {
options: {
center: geoloc,
radius : radiusInM,
visible : {ifset $geolocationCircle}true{else}false{/ifset},
fillOpacity : 0.15,
fillColor : "#2c82be",
strokeColor : "#2c82be"
}
}
}
}
function isPointInRadius($radiusInKm, $cenLat, $cenLng, $lat, $lng) {
$radiusInKm = intval($radiusInKm);
$cenLat = floatval($cenLat);
$cenLng = floatval($cenLng);
$lat = floatval($lat);
$lng = floatval($lng);
$distance = ( 6371 * acos( cos( deg2rad($cenLat) ) * cos( deg2rad( $lat ) ) * cos( deg2rad( $lng ) - deg2rad($cenLng) ) + sin( deg2rad($cenLat) ) * sin( deg2rad( $lat ) ) ) );
if($distance <= $radiusInKm){
return true;
} else {
return false;
}
}