はい、可能ですが、クライアントのウェブブラウザがHTML5をサポートしnavigator.geolocation
ているかどうか、および/またはGoogle Loader APIをフォールバックとして使用しているかどうかによっても異なります。
具体的な GMap JavaScript オブジェクトへの参照は、widgetVarName.getMap()
どこwidgetVarName
で<p:gmap widgetVar>
. その後、などの通常の方法でGMap JavaScript APIsetCenter()
メソッドを使用できます。
navigator.geolocation
HTML5 で位置情報を確認し、フォールバックとして 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のドキュメントも参照してください。この部分をオフにすることはできません。エンドユーザーは、要求を明示的に受け入れる必要があります。エンドユーザーがそれを許可しない場合、最初の中心位置に固定されます。