2017-04-21 10 views
0

リーフレット1.0.3とLeaflet.ajaxを含むいくつかのプラグインを使用しています。私のL.geo.ajax呼び出しが動作してgeojsonオブジェクトを返すが、座標は逆転する。私はこの問題を解決するための機能作成:リーフレット:ajaxコールから受け取った座標を交換する方法

var convertLatLng = function (latlng) { 
 
    var temp = latlng[y]; 
 
    latlng[y] = latlng[x]; 
 
    latlng[x] = temp; 
 
    convertedLatLng = latlng; 
 
    return convertedLatLng; 
 
    console.log('this function is running') 
 
    }

をしかし、私の問題は、私はそれをどこに置くか分からないです。私はgeoJson呼び出しの中で実行しますか?もしそうなら、どこ?ここではAJAX呼び出しの抜粋です:

var geojson = L.geoJson.ajax('http://www.iotwf.com/deployment_map/json', { 
 

 
    pointToLayer: function (feature, latlng) { 
 
    convertLatLng(latlng); 
 
    ... 
 
    }, 
 
    onEachFeature: function(feature, layer) { 
 
    
 
    ... 
 
    } 
 
    });

私もそれを修正することが何のために他の提案を開いています。

答えて

0

ようこそ!

最初に座標が逆転していることを確認してください。リーフレットは、通常、それが自動的にGeoJSON順序を読み出し、正しい座標に層を構築L.geoJSON()工場(およびプラグインL.geoJson.ajax())の場合を除き、[latitude, longitude]を期待一方にGeoJSONフォーマットは、[longitude, latitude]を期待すること

注。

座標がまだ逆転している場合は、データソースの順序を直接(またはデータを出力するサービスによって)修正して、実際に準拠するGeoJSONデータを得ることができます。それは多くの将来の頭痛を解決するだろう。

これが不可能な場合は、実際にスクリプト内で回避策を試すことができます。

L.geoJSON工場のオプションcoordsToLatLngを使用するのが最も適切な方法です。そのdefault implementationを変更

、あなたのようなものになるだろう:

L.geoJson.ajax(url, { 
    coordsToLatLng: function (coords) { 
     //     latitude , longitude, altitude 
     //return new L.LatLng(coords[1], coords[0], coords[2]); //Normal behavior 
     return new L.LatLng(coords[0], coords[1], coords[2]); 
    } 
}); 
+0

をご返信いただきありがとうございます。まだ動作していませんが、次の関数pointToLayerのlatlngとして新しく返されたコードを使用する方法がわからないためですか?それに取り組んで! –

+0

残念ながら、私は与えられたjsonを制御することができないので、私はこの問題を回避する必要があります。 –

+0

よろしくお願いします。できます!基本的にあなたが提案したように。私はそれが働くのを妨げる誤字を加えました。再度、感謝します!! –

関連する問題