2012-05-04 11 views
1

携帯電話のリンクをクリックすると、その場所の検出を許可するかどうかを確認するメッセージが表示されます。はいの場合は、現在の場所から最終的な目的地に向かって始まります。ジオロケーションGoogleマップリンクjQuery

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

<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を新しいリンクと置き換える方法を教えてください。

答えて

2

href属性変更あなたの行に置き換え:いいえがあるかどうかというように、それはまた、if (navigator.geolocation)ブロック内e.preventDefault()を移動する価値があるだろう

window.location.assign(gmapLink); 

:リダイレクトと

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

をユーザーはまだGoogleマップに行き、自分自身の場所を挿入することができます。

+0

ありがとうございます。 1つの質問tho - ユーザーが場所を取得するサイトを望んでいない場合、どのように私は元のhtmlに設定されていたhref(Googleマップのリンクを持つ)にリダイレクトできますか? – cusejuice

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'); 
} 
関連する問題