gpt4 book ai didi

javascript - 使用 Cordova/Angular JS 从用户位置获取地址

转载 作者:数据小太阳 更新时间:2023-10-29 06:15:40 25 4
gpt4 key购买 nike

使用 cordova-plugin-geoloaction 插件,我正在检索用户在其移动设备上的位置。我的 onSuccess() 函数返回纬度和经度,现在我想在应用程序中显示相应的地址:

<script type="text/javascript" charset="utf-8">

// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// device APIs are available
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}

// onSuccess Geolocation
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
}

// onError Callback receives a PositionError object
function onError(error) {
alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
}

</script>

我发现很多 API(例如 Google map )提供地址到纬度/经度的转换,但不提供相反的方式(地址的纬度/经度)。

我可以使用任何好的网络服务吗?

最佳答案

您可以利用 Google Maps Geocoding service用于通过坐标解析地址(反向地理编码)

示例

function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 8,
center: { lat: 40.731, lng: -73.997 }
});
var geocoder = new google.maps.Geocoder;
var infowindow = new google.maps.InfoWindow;

document.getElementById('submit').addEventListener('click', function () {
geocodeLatLng(geocoder, map, infowindow);
});
}

function geocodeLatLng(geocoder, map, infowindow) {
var input = document.getElementById('latlng').value;
var latlngStr = input.split(',', 2);
var latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]) };
geocoder.geocode({ 'location': latlng }, function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[0]) {
map.setZoom(11);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}

google.maps.event.addDomListener(window, 'load', initMap);
html, body {
height: 100%;
margin: 0;
padding: 0;
}

#map {
height: 100%;
}

#floating-panel {
position: absolute;
top: 10px;
left: 25%;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
text-align: center;
font-family: 'Roboto','sans-serif';
line-height: 30px;
padding-left: 10px;
}
<script src="https://maps.google.com/maps/api/js"></script>
<div id="floating-panel">
<input id="latlng" type="text" value="40.714224,-73.961452">
<input id="submit" type="button" value="Reverse Geocode">
</div>
<div id="map"></div>

关于javascript - 使用 Cordova/Angular JS 从用户位置获取地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34373243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com