2

私はロケーションベースのサービスに取り組んでいます。次のクエリに関連する明確な回答が見つからなかったので、質問しています-

独自のサーバーで HTML5 ジオロケーションを有効にする方法は? または、デフォルトで位置情報サービスを提供する中央地理位置情報 DB がありますか (DNS など)。

私のラップトップの Google マップ (http://html5demos.com/geo) の地理位置情報の正確さ (明らかに GPS はありません) を見て、20M 以内の範囲内にあることに驚きました。技術は何ですか?それを独自のシステムに実装する方法は?

以前は IP ロケーションを検索していたとき、ほとんど正確なロケーションを示していた最近の状況とは対照的に、ISP のオフィスが 15 KM も離れた地図に表示されていました。その理由は何ですか?同じWirelesルーターを使用してAndroidフォンを使用していて、そこから場所を取得している可能性がありますか? または HTML5 では、特定の IP アドレスの検索を開始しました (これはややありそうにありません)。

4

5 に答える 5

3

Dive Into HTML 5 では、これがどのように機能し、独自の Web サイトで使用する方法に関する多くの情報を見つけることができます。この本ではModernizrの使用を推奨しており、その簡単な例が提供されています。

function get_location() {
if (Modernizr.geolocation) {
navigator.geolocation.getCurrentPosition(show_map);
} else {
// no native support; maybe try Gears?
} 
}

ラップトップで機能する主な方法は、ローカル ワイヤレス アクセス ポイントの既知の位置を使用することです。これはブラウザーごとに少し異なります。彼らは、Google のストリート ビュー車によって行われたマッピングによって作成された Google の測位サービスを使用します。

于 2010-11-01T16:44:40.660 に答える
2
function GetGeolocation() {

navigator.geolocation.getCurrentPosition(GetCoords, GetError);

}

今GetCords関数をチェックしてください

function GetCoords(position){

alert('latitude: '+ position.coords.latitude);

alert('longitude: '+ position.coords.longitude);

alert('accuracy: '+ position.coords.accuracy);

FindmeOnMap(position.coords.latitude, position.coords.longitude);

}
于 2011-11-05T16:56:59.817 に答える
1
// Check for geolocation support
if (navigator.geolocation) {
    // Use method getCurrentPosition to get coordinates
    navigator.geolocation.getCurrentPosition(function (position) {
        // Access them accordingly
        alert(position.coords.latitude + ", " + position.coords.longitude);
    });
}

から

http://robertnyman.com/2010/03/15/geolocation-in-web-browsers-to-find-location-google-maps-examples/

于 2010-11-01T16:41:03.217 に答える
0

実はとても簡単です。上記のDiveintoHTMLの例は、show_map関数を示していないため、不完全です。show_map関数は、実際に受信データを読み取り、それを使用して何かを実行するユーザー作成関数です。より完全な例を次に示します。

<!DOCTYPE HTML>

<html lang = "en">

<head>

  <title>location.html</title>

  <meta charset = "UTF-8" />

  <script type = "text/javascript">

  //<![CDATA[



  function getLoc(){

    navigator.geolocation.getCurrentPosition(showMap);

  } // end getLoc



  function showMap(position){

    var lat = position.coords.latitude;

    var long = position.coords.longitude;

    var linkUrl = "http://maps.google.com?q=" + lat + "," + long;

    var mapLink = document.getElementById("mapLink");

    mapLink.href = linkUrl;

    var embedMap = document.getElementById("embedMap");

    embedMap.src = linkUrl + "&z=16&amp;output=embed";

  } // end showMap



  //]]>

  </script>

</head>



<body onload = "getLoc()">

  <h1>Geolocation Demo</h1>



  <p>

    <a id = "mapLink"

       href = "http://maps.google.com">click for a map</a>

  </p>



<iframe id = "embedMap"

        width="800" 

        height="500" 

        frameborder="0" 

        scrolling="no" 

        marginheight="0" 

        marginwidth="0" 

        src= "">

</iframe><br />



</body>

</html>

この例(私の次のHTML5本から)には、body onloadメカニズムによって呼び出されるgetLoc()関数があります。これは、navigator.geolocation.getCurrentPosition()関数を使用して許可ベクトルを要求します。許可ダイアログがポップアップ表示されますが、ユーザーが現在の位置を共有しないことを選択した場合は拒否されます。ユーザーが一緒に遊んでいる場合は、示されたコールバック関数(私の場合はshowMap)が表示されます。

コールバック関数は、特別な位置オブジェクトを唯一のパラメーターとして自動的に受け入れます。このオブジェクトには、潜在的に有用な属性がいくつかありますが、緯度と経度が最も役立ちます。これらの値を使用して、現在の位置を簡単に印刷できます。これらの値をGoogleマップのURLに連結して、現在地のGoogleマップをすばやく取得することもできます。また、現在のページにGoogleマップを埋め込み、埋め込まれた(iframe)マップのURLを変更して、すぐにフィードバックを得ました。

お役に立てれば!

于 2010-11-01T17:00:19.730 に答える