1

携帯電話でリンクをクリックしたときに、ユーザーに場所の検出を許可するかどうかを尋ねるプロンプトが表示されます。許可する場合は、Google マップを開いて、現在地から目的地までの道順を表示します。行き先。

これは私が持っているものですが、リンクをクリックすると、フォールバックのデフォルト リンクに移動します。

<a class="geo" href="http://maps.google.com/maps?ll=40.822419,-73.993124">Get Directions</a>

$("a.geo").click(function(e)) {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(getLoc, handle_errors);
    }
    e.preventDefault();
});

function getLoc(position) {
    var geoLat = position.coords.latitude;
    var geoLon = position.coords.longitude;
    var gmapLink = "http://maps.google.com/maps?saddr=" + geoLat + "," + geoLon + "&daddr=40.822419,-73.993124";
    $("a.geo").attr("href", gmapLink);
}

ユーザーがリンクをクリックした後、href をユーザーの場所を含む新しいリンクに置き換えるにはどうすればよいですか?

4

2 に答える 2

2

href属性を変更する行を置き換えます。

$("a.geo").attr("href", gmapLink);

リダイレクト付き:

window.location.assign(gmapLink);

e.preventDefault()ブロック内を移動することも価値がありますif (navigator.geolocation)。これにより、利用可能なジオロケーションがない場合でも、ユーザーは引き続き Google マップにアクセスして、自分のロケーションを自分で挿入できます。

于 2012-05-04T15:01:57.220 に答える
0

以下は私にとってはうまくいきます。$(this) がコールバックを取得するときに押したリンクのままになるように、コンテキストを getLoc 関数にプロキシし、リンクを実際にクリックするためのクリック トリガーを追加したことに注意してください。別の解決策は、window.location を使用することです。

$("a.geo").click(function(e) {               
    if (navigator.geolocation) {
        e.preventDefault();
        navigator.geolocation.getCurrentPosition(
             $.proxy( getLoc, $(this) )                    
            , handle_errors);          
    }
});

function getLoc(position) {                     
    var geoLat = position.coords.latitude;
    var geoLon = position.coords.longitude;
    var gmapLink = "http://maps.google.com/maps?saddr=" + geoLat + "," + geoLon + "&daddr=40.822419,-73.993124";        
    $(this).attr("href", gmapLink);
    $(this).trigger('click');
}
于 2012-05-04T15:18:05.153 に答える