2012-01-13 14 views
2

ご存じのように、MobilesのGoogleマッププログラムは、ユーザーの場所(マイロケーションサービス)を見つける機能を備えています。 私はGoogle Mapsがインターネットモバイル、GPRS(GPSではなく)を使用してユーザーの場所を検出する方法を知りたいですか? と、そのページを開いたときにユーザーの場所を検出できるPHPや他のWebベースの言語でプログラムを書くことは可能ですか? モバイルインターネットIPを使って自分の位置を推測しようとしたときに間違った場所が得られたため、GoogleがユーザーIPを使用して自分の位置を特定していないことが推測できます。GPRSを使用してモバイルロケーションを検出する方法は?

答えて

6

Google Geocoding APIおよびW3 Geolocation API Specificationをご覧ください。その後、thisがあなたの答えを見つけるのに役立つかもしれません。

+1

あなたの答えに感謝します。それは私にも役立ちます。あなたは人生の節約者です。 :) –

+0

@ Sajib Mahmood:ありがとうございますが、これらのメソッドはシンプルな携帯電話のブラウザで動作しますか? –

+1

@ImanHejazi:AppleのiPhoneとAndroidの携帯電話にGoogle Maps JS APIがサポートされています。私は他の携帯電話のブラウザについてあなたを確認することはできません。 –

3

GPSがない場合、測位を行う一般的な方法は、サービングセルIDまたは検出されたWi-Fi MACアドレスの逆引きを行うことです。既知のすべてのセルサイトのジオロケーションを示すサーバベースのデータベースが存在します。これらのサイトは、セルID、より正確にはセルグローバルID(CGI)、および既知のすべてのWi-Fi APのロケーションによって一意に識別されます。したがって、CGIまたはMACを知ることにより、GPRSのような細胞データ収集を介してデータベースに浸漬することによって、おおよその(粗い)位置を判定することができる。これはSkyHook(Appleが使用していたが、もはや使用していない)のような商用サービスがどのように機能するかを示しています。

この粗い位置は、信号強度やデジタルマップなどの追加入力を使用することで、いくらか正確にすることができます。

一部のデバイス(iPhoneなど)は、このデータベースをデバイス上にキャッシュして、粗い解像度の位置決めを高速化します。 Appleは数ヶ月前にこの問題を抱えており、以来、これがどのように機能するかを変えてきました。

ウェブページがデバイスの位置を知るためには、デバイスは適切な(デバイス固有の)測位APIを呼び出して、それをウェブサーバーに提出する必要があります。ただのブラウザ)。

+0

ありがとうございますが、このコードを見つけるにはどうすればよいですか?私の携帯電話のオペレーティングシステムはUIQ3で、GoogleマップのMyLocation機能は正常に動作します。 GoogleMapsなどのユーザーの場所を特定するプログラムを作成するにはどうすればよいですか?アイデアはありますか? –

+0

あなたのブラウザがHTML5をサポートしているように聞こえます.HTTP5は、サーバがブラウザの場所を要求できるようにします。 (ブラウザ自体には、OS固有のロケーションAPIにアクセスする機能が含まれています。)ブラウザのHTML5サポートは、http://www.html5test.comで確認できます。 – boettger1

1

このように動作します。 Googleマップは、ブラウザ(またはGoogleマップコードを使用するプログラム)がジオロケーションインターフェイスをサポートして実装しているかどうかに基づいて、ユーザーに場所を共有するかどうかを尋ねます。詳細については、hereを参照してください。ユーザが自分の位置情報を共有することに同意すると、ローカルの無線アクセスポイントに関する情報が渡され、Googleマップ(または他のサービス)がユーザの位置を推定できるようになります。あなたのプログラムやウェブページにこれを実装することは可能です。私はプログラム内でGoogleマップを使用することについてたくさん知りませんが、Webページについては、ここではあなたが探しているものを行うjavascriptで書かれたものの例です。 PHPでこれを達成することもできると確信しています。

<!DOCTYPE html> 
<html> 
<head> 
<title>Google Maps JavaScript API v3 Example: Map Geolocation</title> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
<meta charset="UTF-8"> 
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" 
    rel="stylesheet" type="text/css"> 
<script type="text/javascript" 
    src="http://maps.googleapis.com/maps/api/js?sensor=true"></script> 

<script type="text/javascript"> 
    var map; 

    function initialize() { 
    var myOptions = { 
     zoom: 6, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById('map_canvas'), 
     myOptions); 

    //this is the piece of code you are interested in!! 
    if(navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = new google.maps.LatLng(position.coords.latitude, 
             position.coords.longitude); 

     var infowindow = new google.maps.InfoWindow({ 
      map: map, 
      position: pos, 
      content: 'Location found using HTML5.' 
     }); 

     map.setCenter(pos); 
     }, function() { 
     handleNoGeolocation(true); 
     }); 
    } else { 
     handleNoGeolocation(false); 
    } 
    } 

    function handleNoGeolocation(errorFlag) { 
    if (errorFlag) { 
     var content = 'Error: The Geolocation service failed.'; 
    } else { 
     var content = 'Error: Your browser doesn\'t support geolocation.'; 
    } 

    var options = { 
     map: map, 
     position: new google.maps.LatLng(60, 105), 
     content: content 
    }; 

    var infowindow = new google.maps.InfoWindow(options); 
    map.setCenter(options.position); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 
</head> 
<body> 
<div id="map_canvas"></div> 
</body> 
</html> 

あなたがこれを使用することができる方法の数を確認するためにGoogle MapsのAPIリファレンスhereを参照してください。また、ソース参照が "sensor = true"で終わるわけではありません。ジオロケーションを使用している場合は、ソースでこの値をtrueに設定することが重要です。

関連する問題