私はGoogleマップでこのレイヤーを持っています:(getTileUrl関数内のgenerateAPIKey()関数に注意してください)
var options ={
center:new google.maps.LatLng(somelat,somelon),
zoom:14,
disableDefaultUI:true,
mapTypeId: google.maps.MapTypeId.ROADMAP,
minZoom:11,
maxZoom:16,
};
var map = new google.maps.Map(document.getElementById('map_canvas'),options);
var myLayerOptions = {
getTileUrl: function(coord, zoom) {
return 'http://localhost/mylayer/'+zoom+'/'+coord.x+'/'+coord.y+'.png&apikey='+ generateAPIKey();
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
opacity:1.0
};
var myLayerMapType = new google.maps.ImageMapType(myLayerOptions);
map.overlayMapTypes.insertAt(0, myLayerMapType);
したがって、私の主な問題は、使用しているサービスの動的 API キーを持っていることです。オープンレイヤーを使用すると、次のようになります。
var mylayer = new OpenLayers.Layer.XYZ(
"mylayer",
[
"http://localhost/mylayer/${z}/${x}/${y}.png&apikey='+ generateAPIKey()
], {
sphericalMercator: true,
wrapDateLine: true,
transitionEffect: "resize",
buffer: 1,
numZoomLevels: 17
}
);
var map = new OpenLayers.Map({
div: "map_canvas",
layers: [mylayer],
controls: [
new OpenLayers.Control.Attribution(),
new OpenLayers.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
}),
new OpenLayers.Control.Zoom(),
new OpenLayers.Control.Permalink({anchor: true})
],
center: [somelat,somelon],
zoom: 14
});
何が問題なのか理解しました。generateAPIKey 関数は 1 回しか実行されません。Google getTileUrl のようなものはありますか?