著者:劉
この記事は、Jianshuの記事https://www.jianshu.com/p/79f9394d4b45で同期的に更新されました。
プロジェクトの実際のアプリケーションでは、送信リクエストにカスタムリクエストヘッダーを追加する必要がある場合があります。次に、SuperMap 2DiClientクライアントでピンチがどのように使用されるかを見てみましょう。
1.バージョンサポート
SuperMap iClientバージョン10i以降、Leaflet / Openlayers / MapboxGL用の2次元iClientが追加されました。
2.使用前の準備
そこSuperMap iServerは、要求ヘッダの前端の前に、必要性、リクエストヘッダ名のセットの構成パラメータを許可されているので、ディレクトリを抽出\ Webアプリケーション\ iserver \ WEB-INF \ web.xmlのiServerにcors.allowed.headers、値の増加しますたとえば、トークンとapptokenの2つのカスタムパラメータを追加する必要があります。次の図に従ってそれらを追加する必要があります。
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token,apptoken</param-value>
</init-param>
構成しない場合、フロントエンドから要求するときに次のエラーが表示されます。
ヒント:トークンのカスタムリクエストヘッダーがSuperMap iServer10iバージョンに含まれると、iServerはユーザーのトークンを解析して検証します(サービスが承認されている場合は、トークンを使用して、サービスへのアクセスが承認されているかどうかを検証する必要があります。Donをカスタマイズしてください独自のリクエストヘッダーの名前としてトークンを使用しない
3. Leaflet / Openlayers / MapboxGLでのiClientの特定の使用
3.1ヘッダーはiServerと相互作用する機能を持つサービスインターフェースに追加することができます
つまり、L.supermap。* service(Leaflet)、ol.supermap。* service(Openlayers)、mapboxgl.supermap。* service(MapboxGL)はすべてのサポートヘッダーをインターフェースします。Classicにはこのパラメーターがありません。次のグローバルを使用できます。設定
#Leaflet
L.supermap
.featureService(url,{
headers: {
apptoken: '...'
}})
.getFeaturesByGeometry(geometryParam, function (serviceResult) {
});
}
#Openlayers
ol.supermap
.featureService(url, {
headers: {
apptoken: '...'
}})
.getFeaturesByGeometry(geometryParam, function (serviceResult) {
});
}
#MapboxGL
mapboxgl.supermap
.featureService(url, {
headers: {
apptoken: '...'
}})
.getFeaturesByGeometry(geometryParam, function (serviceResult) {
});
}
3.2グローバル設定
iServerサービスとやり取りする機能の前に、次のメソッドを書き直してカスタムリクエストヘッダートークンを取得し、グローバル設定を実行します
# iClient for Leaflet/Openlayers/MapboxGL
SuperMap.FetchRequest.commitbak = SuperMap.FetchRequest.commit;
SuperMap.FetchRequest.commit = function (method, url, params, options) {
options.headers = options.headers || {
token: '42f_WTvu4du_QouTxU9C6qSRiQml38DVN2vXyjOT-wbhYwfKu1qKqA6_fvAW_I_cC1Zthpgeb7gxOxbpyeATsQ..'
}
return SuperMap.FetchRequest.commitbak(method, url, params, options)
}
#Classic
SuperMap.Util.commit= SuperMap.Util.committer;
SuperMap.Util.committer = function (options) {
options.headers = options.headers || {
token: '42f_WTvu4du_QouTxU9C6qSRiQml38DVN2vXyjOT-wbhYwfKu1qKqA6_fvAW_I_cC1Zthpgeb7gxOxbpyeATsQ..'
}
return SuperMap.Util.commit(options)
}
ヒント:Classicでは、ドメインがiSeverと同じでない場合、jsonp形式が要求されますが、jsonp要求は基本的に埋め込まれています
メソッド:isInTheSameDomainがtrueに設定されている
getFeatureBySQLService = new SuperMap.REST.GetFeaturesBySQLService(url2, {
eventListeners: {
"processCompleted": processCompleted, "processFailed": processFailed},
isInTheSameDomain:true
});
この記事では主に、iserverと対話してリクエストヘッダーを追加する機能インターフェイスを紹介します。次の記事では、マップタイルを追加する方法について詳しく紹介します。