カスタムタイルを使用してマップをレンダリングするプライムフェイスで GMap コンポーネントを作成できるかどうか疑問に思っています。純粋なjavascript( http://econym.org.uk/gmap/example_custommap1.htm )でそれを行う方法を知っています:
var map = new GMap(document.getElementById("map"));
map.addControl(new GScaleControl());
var copyright = new GCopyright(1,new GLatLngBounds(new GLatLng(53.8136257,-3.0981445),new GLatLng(53.8654855,-2.9663944) ),14, "Ordnance Survey");
var copyrightCollection = new GCopyrightCollection('Map Data:');
copyrightCollection.addCopyright(copyright);
CustomGetTileUrl=function(a,b){
return "tiles/"+a.x+"_"+a.y+".jpg"
}
var tilelayers = [new GTileLayer(copyrightCollection,14,14)];
tilelayers[0].getTileUrl = CustomGetTileUrl;
var custommap = new GMapType(tilelayers, new GMercatorProjection(15), "Old OS");
map.addMapType(custommap);
map.setCenter(new GLatLng(53.852,-3.038), 14, custommap);
しかし、プライムフェイスでそれを行う方法がわかりません。
それが不可能な場合、GMap コンポーネントを javascript で変更して getTileUrl を置き換える方法をご存知ですか?
編集
上記のコードが v2 であることに Duncan が気付いたように (私の元のコードは v3 ですが、非常に面倒なので、バージョンを確認せずにインターネットから最初の作業スニペットを取得しました...)、完全な v3 コードは次のようになります。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 100% }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var mapOptions= {
center : new google.maps.LatLng(0,0),
rotateControl : true,
panControl : true,
zoom : 2,
streetViewControl : false,
mapTypeControlOptions : {
mapTypeIds : ['cv0']
}
};
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var option = {
getTileUrl : function(coord, zoom) {
var tileRange = 15;
if (coord.y < 0 || coord.y >= tileRange || coord.x < 0 || coord.x >= tileRange) {
return null;
}
var addr = "../map_images/new7778069575062411171/5/" + coord.x + "," + coord.y + ".PNG";
return addr;
},
tileSize : new google.maps.Size(256,256),
maxZoom : 2,
minZoom : 2,
name : "title"
};
map.mapTypes.set('cv0', new google.maps.ImageMapType(option));
map.setMapTypeId('cv0');
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"/>
</body>
</html>