Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps OpenLayers层à;谷歌地图图片类型_Google Maps_Openlayers - Fatal编程技术网

Google maps OpenLayers层à;谷歌地图图片类型

Google maps OpenLayers层à;谷歌地图图片类型,google-maps,openlayers,Google Maps,Openlayers,我用Google Maps创建了这一层:(注意getTileUrl函数中的generateAPIKey()函数) 因此,我的主要问题是,对于我使用的服务,我有一个动态API密钥,在开放层中,我有: var mylayer = new OpenLayers.Layer.XYZ( "mylayer", [ "http://localhost/mylayer/${z}/${x}/${y}.png&apikey='+ generateAPIKey() ],

我用Google Maps创建了这一层:(注意getTileUrl函数中的generateAPIKey()函数)

因此,我的主要问题是,对于我使用的服务,我有一个动态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

});

我知道有什么不对,GenerateAppikey函数只执行一次。是否有类似于Google getTileUrl的东西?

是的,XYZ层有方法
getURL
,每个磁贴都会调用该方法,如下所示:

    /**
     * Method: getURL
     *
     * Parameters:
     * bounds - {<OpenLayers.Bounds>}
     *
     * Returns:
     * {String} A string with the layer's url and parameters and also the
     *          passed-in bounds and appropriate tile size specified as
     *          parameters
     */
    getURL: function (bounds) {
        var xyz = this.getXYZ(bounds);
        var url = this.url;
        if (OpenLayers.Util.isArray(url)) {
            var s = '' + xyz.x + xyz.y + xyz.z;
            url = this.selectUrl(s, url);
        }

        return OpenLayers.String.format(url, xyz);
    }
/**
*方法:getURL
*
*参数:
*界-{}
*
*返回:
*{String}包含层的url和参数以及
*传入边界,并指定适当的平铺大小为
*参数
*/
getURL:函数(边界){
var xyz=this.getXYZ(边界);
var url=this.url;
if(OpenLayers.Util.isArray(url)){
变量s=''+xyz.x+xyz.y+xyz.z;
url=此。选择url(s,url);
}
返回OpenLayers.String.format(url,xyz);
}
只需重写此方法并附加API密钥

    /**
     * Method: getURL
     *
     * Parameters:
     * bounds - {<OpenLayers.Bounds>}
     *
     * Returns:
     * {String} A string with the layer's url and parameters and also the
     *          passed-in bounds and appropriate tile size specified as
     *          parameters
     */
    getURL: function (bounds) {
        var xyz = this.getXYZ(bounds);
        var url = this.url;
        if (OpenLayers.Util.isArray(url)) {
            var s = '' + xyz.x + xyz.y + xyz.z;
            url = this.selectUrl(s, url);
        }

        return OpenLayers.String.format(url, xyz);
    }