OpenLayersからKMLを書いて保存することはできますか?誰でも輸出の例を知っていますか?ここでOpenlayersはあなたのマップに基づいてKMLを書いて保存します
答えて
あなたはKMLにのみベクタフィーチャをエクスポートすることができます。
function GetKMLFromFeatures(features) {
var format = new OpenLayers.Format.KML({
'maxDepth':10,
'extractStyles':true,
'internalProjection': map.baseLayer.projection,
'externalProjection': new OpenLayers.Projection("EPSG:4326")
});
return format.write(features);
}
UPDATE
あなたはそれがブラウザに返すことができるようにサーバー側にその文字列を送信する必要があるKMLファイルとしてKML文字列をダウンロードするには、ブラウザを強制するためには、ダウンロードするファイルとして。
あなたはサーバー側で使用している言語/プラットフォーム/などを指定していませんが、これはC#で行ったことです。
私は、テキスト領域のフォームからクエリ文字列とKMLのファイル名を取り込むハンドラを作成しました。
KMLDownload.ashx:
<%@ WebHandler Language="C#" Class="KMLDownload" %>
using System;
using System.Web;
public class KMLDownload : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpResponse response = context.Response;
string kml = context.Request["kml"];
string filename = context.Request.QueryString["filename"];
if (String.IsNullOrEmpty(kml))
{
context.Response.ContentType = "text/plain";
context.Response.Write("{\"error\":\"No files recevied\"}");
}
else
{
if (String.IsNullOrEmpty(filename)){
filename = "Features_KML.kml";
}
// force a download of the kml file.
response.Clear();
response.ContentType = "application/kml";
response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
response.AddHeader("content-legth", kml.Length.ToString());
response.Write(kml.ToString());
response.End();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
はその後、私のjavascriptの側から私は単純にダウンロードを開始するには、これを呼び出す:
var filename = "NameofKMLfileI_WANT.kml";
var url = "secure/KMLDownload.ashx";
if (filename) {
url += "?filename=" + filename;
}
var input = '<TEXTAREA name="kml">' + kml + '</TEXTAREA>';
//send request
jQuery('<form action="' + url + '" method="post">' + input + '</form>').appendTo('body').submit().remove();
ニース。あなたはどのようにKMLを書くか、保存するのですか? – user1040259
具体的にしてください。上記の関数が返すKML文字列からデータベースへの保存、ファイルへの書き込み、またはブラウザによるKMLファイルのダウンロードの開始を強制しますか? – capdragon
ご協力ありがとうございます。ブラウザがKMLのダウンロードを開始するように強制します。 – user1040259
は、保存するために、いくつかのjQueryのアクションです:
$('#saveKML').click(function() {
var kmlFormat = new OpenLayers.Format.KML();
var newWindow = window.open('',
'KML Export ' + (new Date()).getTime(), "width=300,height=300");
newWindow.document.write('<textarea id="kml" style="width: 100%; height: 100%">' +
kmlFormat.write(features) + '</textarea>');
});
あなたはOpenLayersを3または4を使用している場合、あなたは見つけるでしょう以前の(2012年)回答の構文がもう機能しないことを確認してください。
これが行われます。
function GetKMLFromFeatures(features) {
var format = new ol.format.KML();
var kml = format.writeFeatures(features, {featureProjection: 'EPSG:3857'});
return kml;
}
function GetGeoJSONFromFeatures(features) {
var format = new ol.format.GeoJSON();
var geoJSON = format.writeFeatures(features, {featureProjection: 'EPSG:3857'});
return geoJSON;
}
function GetFeaturesFromLayer(layer) {
var source = layer.getSource();
var features = source.getFeatures();
return features;
}
- 1. vb.net基準に基づいてファイルを編集して保存します
- 2. Automapper:カスタムアトリビュートの存在に基づいてマップの動作を変更します
- 3. Angularjs:保存されたデータに基づいてラジオボタンをチェックします
- 4. OpenLayers Googleマップ投影問題(KML付き)
- 5. Javascript - マップまたはフィルタを使用して値の存在に基づいて配列メンバのサブセットを返す
- 6. 文書のテキストに基づいて名前付きのPDF文書を保存します
- 7. .htaccess URLのパスの存在に基づいて書き直し
- 8. Java日付に基づいてPostgresにタイムスタンプを保存する
- 9. Javaマップの実装がHashCodeに基づいていない
- 10. Googleマップ - IDに基づいて
- 11. Python:ユーザー入力に基づいてファイルを保存する
- 12. Java 8.オブジェクトのリスト。ルールに基づいてプロパティに基づいて別名を保持したい
- 13. Pythonは辞書に基づいてファイルを移動します
- 14. IPアドレスに基づいてDBに場所を保存
- 15. ユーザの選択に基づいてデータを保存するためのテーブルデザイン
- 16. スケジュールを作成してシステム時刻に基づいてアンドロイドサービスにデータを保存
- 17. マップされたキーに基づいてアクセスを許可する
- 18. Nlog変数に基づいてログファイルを保存
- 19. あなたのライブラリサポートに基づいてコードをコンパイルしてください
- 20. mongooseを使ってユーザーIDに基づいて文書を保存する方法は?
- 21. キーに基づいて辞書をソート
- 22. サーバー上のkmlファイルからGoogleマップをロードしています
- 23. Word文書を読み取り、ファイルにテキストに基づいて文書を保存するVBAマクロ?
- 24. 保存しているテキストに基づいてラベルの色を変更します
- 25. 別のNSUserDefault値に基づいてNSUserDefault値を保存できますか?
- 26. Laravel EloquentのIdに基づいてデータを正しく保存する方法
- 27. Mysqlの保存時間に基づいてPHPページをリロードする方法は?
- 28. 選択したヘッダー(ドロップダウン)に基づいてグリッドの内容をdbに保存します
- 29. フィルター行は、別のcsvファイルに基づいて、新しいファイルにフィルタリングされたデータを保存
- 30. は、返された値に基づいて既存のデータを上書きします。
はここで同様のソリューションです:役立つかもしれませんか? http://gis.stackexchange.com/questions/17031/openlayers-format-kml-write-style – user1040259