OpenLayers.Control.GetFeature の BBOX を常に long/lat 座標に強制するために、誰かが私を正しい方向に向けることができるかどうか疑問に思っています。私はこれを OpenLayers.Class で取得しようとしているので、新しいコントロールは OpenLayers.Control.GetFeature を継承し、BBOX を少し変更するだけです。これは私がやったことです:
OpenLayers.Control.myGetFeature = OpenLayers.Class(OpenLayers.Control.GetFeature,{
selectBox: function(position){
var opts = OpenLayers.Control.GetFeature(position);
var baseSRSutm = this.map.getprojectionObject();
var layerSRSdd = new OpenLayers.Projection('EPSG:4326');
opts.params.bbox = this.map.getExtent().transform(baseSRSutm,layerSRSdd).toBBOX(null,firstLayer.reverseAxisOrder());
}
return opts;
});
しかし、いくつかの「}」が欠落していることがわかります。これは、OpenLayers.Class を使用して私がやりたいことを行う正しい方法ですか?
どんな助けでも大歓迎です。
PS。OpenLayers 2.11 を使用しています
編集:
「リターンオプト」を移動します。関数内で上記の問題を解決しましたが、CLASS_NAME が欠落していると不平を言いました。それを追加しても、同じことについてまだ不満がありましたが、数回のクリックまたはボックスの後にリクエストを送信しましたが、送信された bbox はまだ UTM にあります。問題はどこにあるのでしょうか? ここにコードがあります:
var mycontrol = function(){
var protocol = new OpenLayers.Protocol.HTTP({
url: 'http://www.....',
format: new OpenLayers.Format.GeoJSON({
ignoreExtraDims: true,
'internalProjection': new OpenLayers.Projection('EPSG:900913'),
'externalProjection': new OpenLayers.Projection('EPSG:4326')
})
});
OpenLayers.Control.myGetFeature = OpenLayers.Class(OpenLayers.Control.GetFeature,{
selectBox: function(position){
var opts = OpenLayers.Control.GetFeature(position);
var baseSRSutm = this.map.getprojectionObject();
console.log('this is the baseSRSutm' + baseSRSutm); // doesnt appear in firebug
var layerSRSdd = new OpenLayers.Projection('EPSG:4326');
opts.params.bbox = this.map.getExtent().transform(baseSRSutm,layerSRSdd).toBBOX(null,firstLayer.reverseAxisOrder());
console.log('this is the opts.params.bbox' + opts.params.bbox); // doesnt appear in firebug
return opts;
},
CLASS_NAME: "OpenLayers.Control.myGetFeature"
});
return new OpenLayers.Control.myGetFeature({
protocol: protocol,
box: true,
click: true,
single: false,
clickTolerance: 10,
eventListeners:{
// some stuff
}
});
};
console.log が firebug に表示されないので、問題は OpenLayers.Control.myGetFeature と OpenLayers.Class にあると思います。「selectBox」関数が必要なように思えますが、サブクラス自体はリターンによって読み取られません。
これについて助けてください、事前に感謝します、