Javascript 反向地理编码

Javascript 反向地理编码,javascript,html,Javascript,Html,我使用以下代码调用地图并显示。我想添加一个功能,做一个反向地理编码,并打印出相应的街道地址。我似乎无法将long/lat坐标传递给函数。如何将长/纬度坐标转换为街道地址 function getMyLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( displayLocation, displayError, { e

我使用以下代码调用地图并显示。我想添加一个功能,做一个反向地理编码,并打印出相应的街道地址。我似乎无法将long/lat坐标传递给函数。如何将长/纬度坐标转换为街道地址

function getMyLocation() {
    if (navigator.geolocation) {

        navigator.geolocation.getCurrentPosition(
        displayLocation, displayError, {
            enableHighAccuracy: true,
            timeout: 9000
        });

        var watchButton = document.getElementById("watch");
        watchButton.onclick = watchLocation;
        var clearWatchButton = document.getElementById("clearWatch");
        clearWatchButton.onclick = clearWatch;
    }
    else {
        alert("Oops, no geolocation support");
    }
}

function displayLocation(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;

    var div = document.getElementById("location");
    div.innerHTML = "You are at Latitude: " + latitude + ", Longitude: " + longitude;
    div.innerHTML += " (with " + position.coords.accuracy + " meters accuracy)";

    var km = computeDistance(position.coords, ourCoords);
    var distance = document.getElementById("distance");
    distance.innerHTML = "You are " + km + " km from the WickedlySmart HQ";

    if (map == null) {
        showMap(position.coords);
        prevCoords = position.coords;
    }
    else {
        var meters = computeDistance(position.coords, prevCoords) * 1000;
        if (meters > 20) {
            scrollMapToPosition(position.coords);
            prevCoords = position.coords;
        }
    }
}​

除了关于手表按钮的区域外,其余部分在Chrome中对我来说都很好


您没有试图从文件://URL执行此操作,是吗?

对不起。我误解了这个问题。这是几周前我为一个项目编写的一些代码。它只是拉取zipcode,但你可以从中获取地址。它是为jQuery编写的。另外,我正在动态加载GoogleMapsAPI。你可以直接加载,如果你想的话

$(document).ready(function() {
    if (navigator.geolocation) {
        var script   = document.createElement("script");
        script.type  = 'text/javascript';
        script.src = 'http://www.google.com/jsapi?callback=loadMapsAPI';
        document.getElementsByTagName('head')[0].appendChild(script);
    } else {
        console.log('NOTE: Browser does not support geolocation.');
    }
}); 


function loadMapsAPI() {
    google.load('maps', '3', {
        'other_params': 'sensor=false',
        'callback' : mapLoaded
        }
    );
}


function mapLoaded() {
    $('#geolocateButton').css('display','block');
}


function findMyLocation() {
    navigator.geolocation.getCurrentPosition(
        function(position) {
            var latLng = new google.maps.LatLng(
                                position.coords.latitude,
                                position.coords.longitude);
            var coder = new google.maps.Geocoder();
            coder.geocode({ 'latLng': latLng }, fillZipcode);
        },
        function() {
            alert("Could not determine your position.");
        }
    );
}   


function fillZipcode(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        if (results[1]) {
            var parts = results[1].address_components;  
            for(var i = 0; i < parts.length; i++) {
                if(parts[i].types[0] == 'postal_code') {
                    alert('Your Zip Code is: ' + parts[i].short_name);
                    return;
                }
            }
        } else {
            alert("Could not figure out your zip code.");
        }
    } else {
        alert("Geocoder failed due to: " + status);
    }
}
$(文档).ready(函数(){
if(导航器.地理位置){
var script=document.createElement(“脚本”);
script.type='text/javascript';
script.src=http://www.google.com/jsapi?callback=loadMapsAPI';
document.getElementsByTagName('head')[0].appendChild(脚本);
}否则{
log('注意:浏览器不支持地理位置');
}
}); 
函数loadMapsAPI(){
load('maps','3'{
“其他参数”:“传感器=错误”,
“回调”:已加载映射
}
);
}
函数mapLoaded(){
$('#geolocateButton').css('display','block');
}
函数findMyLocation(){
navigator.geolocation.getCurrentPosition(
职能(职位){
var latLng=new google.maps.latLng(
位置坐标纬度,
位置坐标经度);
var coder=new google.maps.Geocoder();
编码者。地理编码({'latLng':latLng},fillZipcode);
},
函数(){
警报(“无法确定您的位置”);
}
);
}   
函数fillZipcode(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[1]){
var parts=results[1]。地址\组件;
对于(变量i=0;i
如果你想使用一个额外的库,你可以查看及其jquery插件的最终地理编码/位置示例

示例使用
setLocation
方法自动填充表单,但您也可以轻松打印位置:

// location geocoded -- print address
var onGeocodeSuccess = function (location) {
  console.log(location.toAddress());
}

// location retrieved -- geocode it.
var onUserLocationSuccess = function (location) {
  geous.geocode (location, { 
    reverse: true,
    success: onGeocodeSuccess
  });
}

// Try and get user location
geous.getUserLocation({
  success: onUserLocationSuccess
});

是的,罗杰,上面的工作。我正在尝试添加将long/lat信息推送到reverse geocode函数并返回街道地址的功能。然后我会显示那个街道地址。这是我需要帮助的部分。如何获得街道地址。