地理的な場所を見つけるいくつかの方法:IPアドレス、GPS、WiFi、GSM/CDMA
地理的位置取得プロセス:1.ユーザーは、地理的な場所を取得する必要があるWebアプリケーションを開きます。
2。アプリケーションはブラウザを地理的な場所に要求し、ブラウザはクエリをポップアップして、ユーザーが地理的位置を共有しているかどうかを尋ねます。
3.ユーザーが許可すると仮定すると、ブラウザは設定から関連情報を照会します。
4.ブラウザは、関連する情報を信頼できるロケーションサーバーに送信し、サーバーは特定の地理的場所に戻ります。
HTML5地理的ステータスの実装:1.ブラウザに基づいてユーザーを取得するテクノロジーを実装します(バックエンドサポートは必要ありません)
2。ユーザーの地理的位置を正確に見つけます(機器に応じて、精度は最大10mまでです)
3.ユーザーの地理的位置を継続的に追跡します
4. GoogleマップまたはBaiduマップで位置情報をインタラクティブに提示する
Geolocation APIは、ユーザーのプライバシーとセキュリティの問題を伴う信頼できるサイトとユーザーの現在のジオロケーション情報を共有するために使用されます。したがって、サイトがユーザーの現在のジオロケーションを取得する必要がある場合、ブラウザはユーザーに許可または拒否するように促します。
まず、どのブラウザがジオロケーションAPIをサポートしているかを見てみましょう。
IE9.0+、FF3.5+、Safari5.0+、Chrome5.0+、Opera10.6+、iPhone3.0+、Android2.0+
ジオロケーションAPIはナビゲーターオブジェクトに存在し、3つの方法のみが含まれています。
1。GetCurrentPosition//現在の場所
2。ウォッチポジション//監視場所
3。ClearWatch//クリア監視
navigator.geolocation.getCurrentPosition(…、function(error){
switch(error.code){
ケースERROR.TIMEOUT:
Alert( "Connection -Out、もう一度やり直してください");
壊す;
ケースERROR.PERISTION_DENIED:
Alert(「ロケーション共有サービスの使用を拒否しましたが、クエリはキャンセルされました」);
壊す;
ケースエラー.position_unavailable:
Alert( "、申し訳ありませんが、当面の間、惑星にロケーションサービスを提供することはできません」);
壊す;
}
});
WatchPositionは、ClearWatchと組み合わせたトラッカーのようなものです。
WatchPositionは、SetIntervalとClearIntervalの作業方法に少し似ています。
var watchpositionId = navigator.geolocation.watchposition(success_callback、error_callback、options);
navigator.geolocation.clearwatch(watchpositionId);
HTML 5は、ユーザーが使用できる地理的位置などの一連のAPIを提供します。これにより、ユーザーがLBS地理的アプリケーションを作成できるようになります。まず、HTML 5をサポートするブラウザでは、APIを開くと、ユーザーがAPIの使用に同意するかどうかを尋ねます。
1.ブラウザがLBS APIをサポートするかどうかを判断するためにオンになります関数iseolocationApiavaibale()
{
var location = "いいえ、ジオロケーションはこのブラウザによってサポートされていません。";
if(window.navigator.geolocation){
場所= "はい、ジオロケーションはこのブラウザによってサポートされています。";
}
アラート(場所);
}
上記の例では、例外もDisplayErrorメソッドに巻き込まれました。
2。ユーザーの地理的位置を取得しますこれは、getCurrentPositionを使用して行われます。
function requestposition(){
if(nav == null){
nav = window.navigator;
}
if(nav!= null){
var geoloc = nav.geolocation;
if(geoloc!= null){
geoloc.getCurrentPosition(SuccessCallback);
}
それ以外 {
Alert( "Geolocation APIはブラウザではサポートされていません");
}
}
それ以外 {
Alert( "Navigatorが見つかりません");
}
}
地理的位置が正常に取得されると、返された結果を処理するためにコールバック方法が生成されます。
関数setlocation(val、e){
document.getElementById(e).value = val;
}
関数SuccessCallback(位置)
{
setlocation(position.coords.latitude、 "latitude"); setlocation(position.coords.longitude、 "経度");
}
3.非常に一般的な質問は、ユーザーの変化する地理的位置を追跡する方法です。ここでは、使用した2つのAPIを要約します。1時計ポジション
例は次のとおりです。
function ristenforpositionUpdates(){
if(nav == null){
nav = window.navigator;
}
if(nav!= null){
var geoloc = nav.geolocation;
if(geoloc!= null){
watchid = geoloc.watchposition(successcallback);
} それ以外 {
Alert( "Geolocation APIはブラウザではサポートされていません");
}
} それ以外 {
Alert( "Navigatorが見つかりません");
}
}
その後、SuccessCallbackでは、最新の地理的場所を表示することができます。
関数successcallback(position){
settext(position.coords.latitude、 "latitude"); settext(position.coords.longitude、 "経度");
}
リアルタイムトラッキングが必要ない場合は、キャンセルできます。
function clearwatch(watchID){
window.navigator.geolocation.clearwatch(watchID);
}
4.例外に対処する方法例外が発生したら、キャッチできます。
if(geoloc!= null){
Geoloc.getCurrentPosition(SuccessCallback、ErrorCallback);
}
関数errorcallback(error){
var message = "";
switch(error.code){
ケースERROR.PERISTION_DENIED:
message = "このウェブサイトには使用許可がありません」
+「ジオロケーションAPI」;
壊す;
ケースエラー.position_unavailable:
message = "現在の位置を決定できませんでした。";
壊す;
ケースERROR.PERISTION_DENIED_TIMEOUT:
メッセージ=「現在の位置を決定できませんでした」
+「指定されたタイムアウト期間内。」;
壊す;
}
if(message == ""){
var strerrorcode = error.code.tostring();
message = "ポジションは、そのため決定できませんでした」
+ "不明なエラー(code:" + strerrorcode + ")。";
}
アラート(メッセージ);
}
5。Googleマップの場所を表示します(GoogleマップAPIが設定されている場合)関数getCurrentLocation()
{
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showmyposition、showerror);
}
それ以外
{
Alert( "いいえ、ジオロケーションAPIはこのブラウザによってサポートされていません。");
}
}
関数showmyposition(位置)
{
var coordinates = position.coords.latitude+"、"+position.coords.longitude;
var map_url = "http://maps.googleapis.com/maps/api/staticmap?center="
+座標+"&zoom = 14&size = 300x300&sensor = false";
document.getElementById( "googlemap")。innerhtml = "<img src = '"+map_url+"' />";
}
function Showerror(エラー)
{
switch(error.code)
{
ケースERROR.PERISTION_DENIED:
アラート(「このウェブサイトには、ジオロケーションAPIを使用する許可がありません」)
壊す;
ケースエラー.position_unavailable:
アラート(「現在の位置を決定できませんでした。」)
壊す;
ケースERROR.TIMEOUT:
アラート(「現在の位置は、指定されたタイムアウト期間内に決定できませんでした。」)
壊す;
ケースエラー.unknown_error:
アラート(「不明なエラーのために位置を決定できませんでした。」)
壊す;
}
}