で
var kmlString = result;
var features = new ol.format.KML().readFeatures(kmlString);
var KMLvectorSource = new ol.source.Vector({
features: features
});
var KMLvector = new ol.layer.Vector({ source: KMLvectorSource });
//KMLvector.addFeatures(features);
map.addLayer(KMLvector);
おかげで働くあなたのKML機能の投影の定義と変換が欠落しています。 https://openlayers.org/en/v4.2.0/examples/data/kml/2012-02-10.kml
のkml機能はEPSG:4326
に投影され、地図はEPSG:3857
に投影されます。 kmlは4326
に投影されるのが普通です。そのため、ほとんどの場合、kmlのEPSGコードは4326です。
今問題に戻ります。この行を変更します。
これに
var features = new ol.format.KML().readFeatures(kmlString);
:
var features = new ol.format.KML().readFeatures(kmlString,{ dataProjection:'EPSG:4326', featureProjection:'EPSG:3857' });
ところで、私はOpenLayersをからKMLを使用してはいけません。私は3857で投影された文字列を含む文字列変数を持っています。私はすでにそのコードを試しましたが、エラーはありませんが、kmlレイヤーは表示されません – gray
文字列に渡す以外のデータベースからkmlをロードする方法はありますか? – gray
あなたの質問は、文字列から。私たちが時間を無駄にしないように、あなたが本当に望んでいるものをより良く決定する。 – pavlos