防止href直到地理定位捕获(回调帮助)

时间:2014-02-09 19:49:59

标签: javascript jquery html html5

用户点击图片(html代码)后,我希望它可以询问地理位置,并且只有href才会被捕获。问题是根本没有调用specialDisplyLocation方法来设置变量。我认为这与我使用回调的方式有关。

latlng,lat和lng是全局变量

这是当前的代码:

function getForSpecial(callback) {
    callback (arguments[1]);
}

function getGeo (compid){

    if (navigator.geolocation){
        navigator.geolocation.getCurrentPosition(specialDisplayLocation, displayError);
        window.location.href = "specials.php?cid="+compid+"&lat="+lat+"&lng="+lng;
    }else{
        display(2,"Sorry - your browser doesn't support geolocation! " +
            "Use your postal code.");
    }
}

function specialDisplayLocation() {
    latlng = new google.maps.LatLng(
        parseFloat(position.coords.latitude),
        parseFloat(position.coords.longitude));
    lat = position.coords.latitude;
    lng = position.coords.longitude;
    alert("lat: "+lat);
}

HTML:

<div class="ad_125x125" 
    onclick="getForSpecial(getGeo,<?php echo $output125[0][0]; ?>)">
    <img src="/ed/img/promos/125/<?php echo $output125[0][1]; ?>" />
</div>

1 个答案:

答案 0 :(得分:1)

当您将specialDisplayLocation称为成功回调时。我建议你重定向那个方法。

function specialDisplayLocation() {
    latlng = new google.maps.LatLng(
        parseFloat(position.coords.latitude),
            parseFloat(position.coords.longitude));
    lat = position.coords.latitude;
    lng = position.coords.longitude;
    alert("lat: "+lat);

    //Redirect
    window.location.href = "specials.php?cid="+compid+"&lat="+lat+"&lng="+lng;
}

修改

试试这个

function getForSpecial(callback) {
    callback (arguments[1]);
}

function getGeo (compid){

    if (navigator.geolocation){
        navigator.geolocation.getCurrentPosition(function(){
            specialDisplayLocation();
            window.location.href = "specials.php?cid="+compid+"&lat="+lat+"&lng="+lng;
        }, displayError);

    }else{
        display(2,"Sorry - your browser doesn't support geolocation! " +
            "Use your postal code.");
    }
}

function specialDisplayLocation() {
    latlng = new google.maps.LatLng(
        parseFloat(position.coords.latitude),
        parseFloat(position.coords.longitude));
    lat = position.coords.latitude;
    lng = position.coords.longitude;
    alert("lat: "+lat);
}