3

Primefaces の gmap を使用して、Google マップをクライアントの現在の場所に集中させることは可能ですか?

JSF、JPA、primefaces を使用して、公衆衛生情報システムを開発しています。GPS 機能を備えたモバイル デバイスを使用するフィールド オフィサーは、データが分析のためにデータベースに記録されるように、位置を記録する必要があります。

Primefaces gmapでそれを行うことはできますか?

それが不可能な場合、この機能を実現するために使用できる他のツールやテクノロジは何ですか?

4

1 に答える 1

5

はい、可能ですが、クライアントのウェブブラウザがHTML5をサポートしnavigator.geolocationているかどうか、および/またはGoogle Loader APIをフォールバックとして使用しているかどうかによっても異なります。

具体的な GMap JavaScript オブジェクトへの参照は、widgetVarName.getMap()どこwidgetVarName<p:gmap widgetVar>. その後、などの通常の方法でGMap JavaScript APIsetCenter()メソッドを使用できます。

navigator.geolocationHTML5 で位置情報を確認し、フォールバックとして Google Loader API を使用する場合のキックオフの例を次に示します。

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<p:gmap widgetVar="w_gmap" type="HYBRID" center="41.381542, 2.122893" zoom="15" style="width:600px;height:400px" />       

<script type="text/javascript">
    if (navigator.geolocation) {
        checkGeolocationByHTML5();
    } else {
        checkGeolocationByLoaderAPI(); // HTML5 not supported! Fall back to Loader API.
    }

    function checkGeolocationByHTML5() {
        navigator.geolocation.getCurrentPosition(function(position) {
            setMapCenter(position.coords.latitude, position.coords.longitude);
        }, function() {
            checkGeolocationByLoaderAPI(); // Error! Fall back to Loader API.
        });
    }

    function checkGeolocationByLoaderAPI() {
        if (google.loader.ClientLocation) {
            setMapCenter(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
        } else {
            // Unsupported! Show error/warning?
        }
    }

    function setMapCenter(latitude, longitude) {
        w_gmap.getMap().setCenter(new google.maps.LatLng(latitude, longitude));
    }
</script>

注: の最初の中心の場所は、 PrimeFaces ショーケース41.381542, 2.122893からコピーペーストされたもので、お気に入りのクラブのフットボール スタジアムを表していると思います :) 自由に他の場所 (たとえば、自分の会社の場所) に変更できます。

また、平均的な Web ブラウザは、セキュリティ上の理由から、エンドユーザーに場所を共有するための確認を求めることにも注意してください。この件については、 Google Chrome のドキュメントMozilla Firefoxのドキュメントも参照してください。この部分をオフにすることはできません。エンドユーザーは、要求を明示的に受け入れる必要があります。エンドユーザーがそれを許可しない場合、最初の中心位置に固定されます。

于 2013-10-11T14:25:54.353 に答える