2

そのため、私は Web アプリケーションを開発しており、HTML5 ジオロケーション機能を実装しています。これは、Google の Web サイトから取得した Javascript コードを使用して実装しました。このコードは、私のページにもある Google マップとやり取りします。以下にコードを示します。

// Note that using Google Gears requires loading the Javascript
// at http://code.google.com/apis/gears/gears_init.js

var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag =  new Boolean();

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

  // Try W3C Geolocation (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  // Try Google Gears Geolocation
  } else if (google.gears) {
    browserSupportFlag = true;
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeoLocation(browserSupportFlag);
    });
  // Browser doesn't support Geolocation
  } else {
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }

  function handleNoGeolocation(errorFlag) {
    if (errorFlag == true) {
      alert("Geolocation service failed.");
      initialLocation = newyork;
    } else {
      alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
      initialLocation = siberia;
    }
    map.setCenter(initialLocation);
  }
}

このコードが行うことは、サイトにアクセスしているブラウザーが新しい WC3 地理位置情報機能をサポートしているかどうかを確認し、サポートしている場合はそれを使用して緯度と経度を見つけることです。サポートされていない場合は、Google Gears を使用してその情報を取得しようとします。最終的に、どちらもサポートしていない場合は救済されます。

Firefox、Safari、Opera、Chrome などのブラウザと同じようにこれを使用してもまったく問題ありません。ほとんどの新しいバージョン (および一部の古いバージョンも) はこれらの機能をサポートしていますが、IE8 (9 動作) はサポートしていないためです。 :(

IE8 は Google Gears のフェイルセーフさえ使用していません。まったく機能しません。とにかく(上記のコードのように無料で)、IE8で何らかの形式のジオロケーションを使用することはできますか?

また、まだテストしていませんが、(主要なデバイスで) モバイル ブラウザーを使用してこのサイトにログオンした場合、WC3 Geolocation/Google Gears もサポートするか、IE8 のように機能しますか. sensor=trueGPS がオンになっている場合、モバイル デバイスからの位置情報を要求するときに属性を使用できることもわかっているので、別の方法ですが、サポートされている場合は地理位置情報を使用したいと思います。

みんなありがとう。

4

1 に答える 1

2

HTML5 の地理位置情報機能が本格的に使用される前に、もう少し成熟するのを待っています。それまでの間、私はMaxMindが提供する API とデータセットを使用して大きな成功を収めました。

編集:

言い忘れていましたが、これはモバイル ブラウザーではうまく機能しないことがあります。モバイル ブラウザーでは HTML5 ジオロケーション機能の方がはるかに高速で信頼性が高いことがわかっているので、HTML5 ジオロケーション機能を引き続き使用することをお勧めします。

于 2011-04-13T16:11:18.470 に答える