比較的単純なJavaScriptコードを使用して、緯度と経度、高度など、ユーザーの地理的位置の詳細を決定できるWebアプリケーションを作成できます。一部のWebアプリケーションは、GoogleMaps APIなどのマップシステムも統合することにより、ユーザーの場所の移動を監視することでナビゲーション機能を提供することもできます。
HTML5は、ユーザーの位置を決定するためのジオロケーションAPIを提供します。 HTML5のこの機能を使用して、ジオロケーション情報に基づいてアプリケーションを開発できます。この記事では、例を組み合わせて、HTML5の使用方法を共有し、BaiduおよびGoogleマップインターフェイスを使用してユーザーの正確な地理的位置情報を取得します。
GeolocationはHTML5の新機能であるため、HTML5、特にGeolocationがより正確なiPhoneなどのハンドヘルドデバイスをサポートする最新のブラウザでのみ実行することができます。まず、ユーザーデバイスのブラウザがジオロケーションをサポートしているかどうかを検出し、もしそうなら、地理情報を取得する必要があります。この機能は、ユーザーのプライバシーを侵害する可能性があることに注意してください。ユーザーの同意がない限り、ユーザーの位置情報は利用できないため、アプリケーションにアクセスすると、ジオロケーションを許可するかどうかを促します。もちろん、許可することを選択できます。
- functiongetLocation(){
- if(navigator.geolocation){
- navigator.geolocation.getCurrentPosition(ShowPosition、Showerror);
- }それ以外{
- アラート(ブラウザはジオロケーションをサポートしていません。);
- }
- }
上記のコードは、ユーザーデバイスがGeolocationをサポートしている場合、getCurrentPosition()メソッドを実行することを示しています。 getCurrentPosition()が正常に実行されると、座標オブジェクトがパラメーターショーポジションで指定された関数に返されます。 getCurrentPosition()メソッドの2番目のパラメーターは、ユーザーの場所が取得できないときに実行される関数を指定するエラーを処理するために使用されます。
まず、ユーザーの地理的位置を取得するときにいくつかのエラーコードの処理を指定する関数Showerror()を見てみましょう。
- functionshowerror(エラー){
- switch(error.code){
- caseerror.permission_denied:
- アラート(ローカリゼーションが失敗し、ユーザーはジオロケーションを要求することを拒否します);
- 壊す;
- caseerror.position_unavailable:
- アラート(ローカリゼーションが失敗し、位置情報は利用できません)。
- 壊す;
- caseerror.timeout:
- アラート(ロケーションが失敗し、ユーザーロケーションタイムアウトの取得を要求);
- 壊す;
- caseerror.unknown_error:
- アラート(ローカリゼーションが失敗し、位置決めシステムが失敗しました);
- 壊す;
- }
- }
関数のshowposition()を見て、座標の緯度と経度を呼び出して、ユーザーの緯度と経度を取得します。
- functionshowposition(position){
- varlat = position.coords.latitude; // latitude
- varlag = position.coords.longitude; //経度
- アラート( 'lat:'+lat+'、経度:'+ラグ);
- }
BaiduマップとGoogleマップインターフェイスを使用して、ユーザーアドレスを取得します
HTML5のジオロケーションがユーザーの緯度と経度を取得できることを理解しているため、抽象的な緯度と経度を読み取り可能な意味のある実際のユーザー地理的位置情報に変換することが必要です。幸いなことに、BaiduマップとGoogleマップは、この点でインターフェイスを提供します。 HTML5が取得した緯度と経度の情報をMAPインターフェイスに渡すだけで、州、市、地方自治体、地域の情報、さらには街路や家番号などの詳細な地理的位置情報を含むユーザーの地理的位置を返します。
最初にDIVを定義して、ページに地理的位置を表示し、それぞれID#baidu_geoとid#google_geoを定義します。キー関数showposition()を変更するだけです。まず、Baidu Map Interface Interactionを見てみましょう。緯度と経度の情報をAjaxを介してBaiduマップインターフェイスに送信すると、インターフェイスは対応する州、市、および通りの情報を返します。 Baidu Map InterfaceはJSONデータの文字列を返し、ニーズに応じて必要な情報をdiv#baidu_geoに表示できます。 Jquery Libraryはここで使用されており、JQuery Libraryファイルを最初にロードする必要があることに注意してください。
- functionshowposition(position){
- varlatlon = position.coords.latitude+'、'+position.coords.longitude;
- // baidu
- varurl = http://api.map.baidu.com/geocoder/v2/?ak = c93b5178d7a8ebdb830b9b557abce78b&callback = renderRevervese&location =+latlon+&output = json&pois = 0;
- $ .ajax({
- タイプ:get、
- データ型:JSONP、
- URL:URL、
- beforesend:function(){
- $(#baidu_geo).html( 'locating ...');
- }、
- 成功:function(json){
- if(json.status == 0){
- $(#baidu_geo).html(json.result.formatted_address);
- }
- }、
- エラー:function(xmlhttprequest、textStatus、errorthrown){
- $(#baidu_geo).html(latlon+アドレスの場所が失敗しました);
- }
- });
- });
Google Maps Interface Interactionを見てみましょう。同様に、Ajaxを介してGoogle Mapsインターフェイスに緯度と経度の情報を送信すると、インターフェイスは対応する州、都市、通りの詳細を返します。 Google Mapsインターフェイスは、一連のJSONデータも返します。これらのJSONデータは、Baidu Mapsインターフェイスによって返されるデータよりも詳細です。ニーズに応じて、Google_geoをdivに必要な情報を表示できます。
- functionshowposition(position){
- varlatlon = position.coords.latitude+'、'+position.coords.longitude;
- //グーグル
- varurl = 'http://maps.google.cn/maps/api/geocode/json?latlng ='+latlon+'&language = cn';
- $ .ajax({
- タイプ:get、
- URL:URL、
- beforesend:function(){
- $(#google_geo).html( 'locating ...');
- }、
- 成功:function(json){
- if(json.status == 'ok'){
- varresults = json.results;
- $ .each(results、function(index、array){
- if(index == 0){
- $(#google_geo).html(array ['formatted_address']);
- }
- });
- }
- }、
- エラー:function(xmlhttprequest、textStatus、errorthrown){
- $(#google_geo).html(latlon+アドレスの場所が失敗しました);
- }
- });
- }
上記のコードでは、BaiduマップインターフェイスとGoogleマップインターフェイスをそれぞれ関数showposition()に統合し、実際の状況に従って呼び出すことができます。もちろん、これは単なるアプリケーションです。この簡単な例に基づいて、多くの複雑なアプリケーションを開発できます。モバイルブラウザを使用して、デモのデモンストレーションにアクセスすることをお勧めします。