2016-04-27 26 views
2

Google Maps APIを使用してGoogle MapsにGeoJSON LineStringをプロットしようとしています。Google MapsのGeoJSONレンダリングが正しくありません

私はGeoJSONオブジェクトをAJAXレスポンスとして取得しています。マップ上にGeoJSONレスポンスをロードするには、 "map.data.addGeoJson(data)"関数を使用しています。

Open Street Mapsのウェブサイトの.gpxファイルからGPSの緯度と経度がすべて切り取られ、データベースに格納されます。それらはGeoJSON形式にコンパイルされ、Webサイトに送信されます。

個々の点はすべてドイツにありますが、軌道はソマリアの近くに描画されます。

誰でも教えてください。

次のようにAJAXリクエストを含むinitMap関数である:

 function initMap() { 

    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 12, 
     center: {lat: 53.44620230866472, lng: 9.666813185187198}, 
     mapTypeId: google.maps.MapTypeId.TERRAIN, 
    }); 


    $.ajax({ 
    url: 'http://ADDRESS TO SERVER/api/geodata/getLineString', 
    data: {"usrid":3,"startd":"2016-04-17","endd":"2016-04-18"}, 
    type: 'POST', 
    success: function (response) { 
    map.data.addGeoJson(response); 
     }, 
    error: function() { 
     alert("error"); 
    }, 
}); 
    } 

全体にGeoJSON応答は以下の通りである:

 { 
    "type": "Feature", 
    "geometry": { 
    "type": "LineString", 
    "coordinates": [ 
     [ 
     51.731921404763426, 
     14.342405595236764 
     ], 
     [ 
     51.731914999999994, 
     14.342412 
     ], 
     [ 
     51.73192399392278, 
     14.342408729482642 
     ], 
     [ 
     51.73193, 
     14.342416000000004 
     ], 
     [ 
     51.731934, 
     14.342417000000001 
     ], 
     [ 
     51.73193, 
     14.342411999999998 
     ], 
     [ 
     51.731926, 
     14.342408 
     ], 
     [ 
     51.73192399392278, 
     14.342408729482642 
     ], 
     [ 
     51.731921404763426, 
     14.342405595236764 
     ], 
     [ 
     51.73199100000001, 
     14.34214 
     ], 
     [ 
     51.73198299999999, 
     14.342144 
     ], 
     [ 
     51.731987, 
     14.342298000000001 
     ], 
     [ 
     51.731983, 
     14.342302000000002 
     ], 
     [ 
     51.731983, 
     14.342303999999999 
     ], 
     [ 
     51.73199100000001, 
     14.342310000000001 
     ], 
     [ 
     51.731995000000005, 
     14.342308 
     ], 
     [ 
     51.731998, 
     14.342317 
     ], 
     [ 
     51.731999943503226, 
     14.34232428813586 
     ], 
     [ 
     51.732002, 
     14.342319000000002 
     ], 
     [ 
     51.732006000000005, 
     14.342308000000003 
     ], 
     [ 
     51.732009999999995, 
     14.342290999999996 
     ], 
     [ 
     51.73201799999999, 
     14.342276 
     ], 
     [ 
     51.732025, 
     14.342262999999999 
     ], 
     [ 
     51.732025, 
     14.342252999999998 
     ], 
     [ 
     51.732032999999994, 
     14.342243 
     ], 
     [ 
     51.732032999999994, 
     14.342237000000003 
     ], 
     [ 
     51.73202500000001, 
     14.342224000000002 
     ], 
     [ 
     51.73201799999999, 
     14.342204999999996 
     ], 
     [ 
     51.73201, 
     14.342184999999999 
     ], 
     [ 
     51.732002, 
     14.342166 
     ], 
     [ 
     51.731995000000005, 
     14.342153 
     ], 
     [ 
     51.731995000000005, 
     14.342149000000001 
     ], 
     [ 
     51.73199100000001, 
     14.34214 
     ], 
     [ 
     51.731976333334124, 
     14.340528000002589 
     ], 
     [ 
     51.73196, 
     14.340535 
     ], 
     [ 
     51.731934, 
     14.340549 
     ], 
     [ 
     51.73190300000001, 
     14.340559 
     ], 
     [ 
     51.731873, 
     14.340569 
     ], 
     [ 
     51.731846000000004, 
     14.340582 
     ], 
     [ 
     51.731815, 
     14.340595 
     ], 
     [ 
     51.731789, 
     14.340612000000002 
     ], 
     [ 
     51.731762, 
     14.340625999999999 
     ], 
     [ 
     51.73173100000001, 
     14.340643 
     ], 
     [ 
     51.731705, 
     14.340658 
     ], 
     [ 
     51.731674, 
     14.340673 
     ], 
     [ 
     51.731651, 
     14.340681999999997 
     ], 
     [ 
     51.731621, 
     14.340693 
     ], 
     [ 
     51.73160200000001, 
     14.340705999999997 
     ], 
     [ 
     51.731586, 
     14.340723 
     ], 
     [ 
     51.731567, 
     14.340734000000003 
     ], 
     [ 
     51.731548, 
     14.340740000000002 
     ], 
     [ 
     51.73153299999999, 
     14.340748999999999 
     ], 
     [ 
     51.731514, 
     14.340759 
     ], 
     [ 
     51.731495, 
     14.340764000000002 
     ], 
     [ 
     51.731476, 
     14.340768 
     ], 
     [ 
     51.731472, 
     14.340768 
     ], 
     [ 
     51.731472, 
     14.340765999999997 
     ], 
     [ 
     51.731468, 
     14.340762 
     ], 
     [ 
     51.73146799999999, 
     14.340772999999999 
     ], 
     [ 
     51.731468, 
     14.340788 
     ], 
     [ 
     51.731472, 
     14.340809 
     ] 
     ] 
     }, 
    "properties": { 
    "trajectoryid": "05BC2B9E-7350-4D55-B4BB-026EC0B2E65B", 
    "color": "blue" 
    } 
    } 
+1

サウンド/見えます。 GeoJSONは '' [経度、経度]ではなく '[経度、緯度]です。 – geocodezip

+0

@geocodezip私はGeoJSONのすべてのポイントのマーカーを設定し、それらはすべてドイツで正しくプロットされていました。どうやって!? –

+0

どのようにマーカーを作成しましたか? – geocodezip

答えて

5

あなたが後方座標を有します。 GeoJSONは[longitude, latitude]であり、[latitude, longitude]ではありません。 。

がドキュメントにpositionsを参照してください。少なくとも二つの要素が存在しなければならない

「位置は数字の配列で表され、かつ以上であってよく、X、Yに従わなければならない要素の順序、 z座標(東西、北緯、投影座標参照系の座標の高度、または経度、緯度、地理座標参照系の座標の高度

座標を逆にすると、ポリラインがドイツに表示されます。

コードスニペット:あなたは後方座標を持っているよう

var map; 
 
var bounds = new google.maps.LatLngBounds(); 
 

 
function initMap() { 
 

 
    map = new google.maps.Map(document.getElementById('map'), { 
 
    zoom: 12, 
 
    center: { 
 
     lat: 53.44620230866472, 
 
     lng: 9.666813185187198 
 
    }, 
 
    mapTypeId: google.maps.MapTypeId.TERRAIN, 
 
    }); 
 
    // map.data.addGeoJson(geoJson); 
 
    map.data.addGeoJson(reverseData(geoJson)); 
 
} 
 
google.maps.event.addDomListener(window, "load", initMap); 
 

 
function reverseData(data) { 
 
    for (var i = 0; i < data.geometry.coordinates.length; i++) { 
 
    data.geometry.coordinates[i] = [data.geometry.coordinates[i][1], data.geometry.coordinates[i][0]]; 
 
    var mrk = new google.maps.Marker({ 
 
     position: { 
 
     lat: data.geometry.coordinates[i][1], 
 
     lng: data.geometry.coordinates[i][0] 
 
     }, 
 
     // map: map 
 
    }); 
 
    bounds.extend(mrk.getPosition()); 
 
    } 
 
    map.fitBounds(bounds); 
 
    return data; 
 
} 
 
var geoJson = { 
 
    "type": "Feature", 
 
    "geometry": { 
 
    "type": "LineString", 
 
    "coordinates": [ 
 
     [ 
 
     51.731921404763426, 
 
     14.342405595236764 
 
     ], 
 
     [ 
 
     51.731914999999994, 
 
     14.342412 
 
     ], 
 
     [ 
 
     51.73192399392278, 
 
     14.342408729482642 
 
     ], 
 
     [ 
 
     51.73193, 
 
     14.342416000000004 
 
     ], 
 
     [ 
 
     51.731934, 
 
     14.342417000000001 
 
     ], 
 
     [ 
 
     51.73193, 
 
     14.342411999999998 
 
     ], 
 
     [ 
 
     51.731926, 
 
     14.342408 
 
     ], 
 
     [ 
 
     51.73192399392278, 
 
     14.342408729482642 
 
     ], 
 
     [ 
 
     51.731921404763426, 
 
     14.342405595236764 
 
     ], 
 
     [ 
 
     51.73199100000001, 
 
     14.34214 
 
     ], 
 
     [ 
 
     51.73198299999999, 
 
     14.342144 
 
     ], 
 
     [ 
 
     51.731987, 
 
     14.342298000000001 
 
     ], 
 
     [ 
 
     51.731983, 
 
     14.342302000000002 
 
     ], 
 
     [ 
 
     51.731983, 
 
     14.342303999999999 
 
     ], 
 
     [ 
 
     51.73199100000001, 
 
     14.342310000000001 
 
     ], 
 
     [ 
 
     51.731995000000005, 
 
     14.342308 
 
     ], 
 
     [ 
 
     51.731998, 
 
     14.342317 
 
     ], 
 
     [ 
 
     51.731999943503226, 
 
     14.34232428813586 
 
     ], 
 
     [ 
 
     51.732002, 
 
     14.342319000000002 
 
     ], 
 
     [ 
 
     51.732006000000005, 
 
     14.342308000000003 
 
     ], 
 
     [ 
 
     51.732009999999995, 
 
     14.342290999999996 
 
     ], 
 
     [ 
 
     51.73201799999999, 
 
     14.342276 
 
     ], 
 
     [ 
 
     51.732025, 
 
     14.342262999999999 
 
     ], 
 
     [ 
 
     51.732025, 
 
     14.342252999999998 
 
     ], 
 
     [ 
 
     51.732032999999994, 
 
     14.342243 
 
     ], 
 
     [ 
 
     51.732032999999994, 
 
     14.342237000000003 
 
     ], 
 
     [ 
 
     51.73202500000001, 
 
     14.342224000000002 
 
     ], 
 
     [ 
 
     51.73201799999999, 
 
     14.342204999999996 
 
     ], 
 
     [ 
 
     51.73201, 
 
     14.342184999999999 
 
     ], 
 
     [ 
 
     51.732002, 
 
     14.342166 
 
     ], 
 
     [ 
 
     51.731995000000005, 
 
     14.342153 
 
     ], 
 
     [ 
 
     51.731995000000005, 
 
     14.342149000000001 
 
     ], 
 
     [ 
 
     51.73199100000001, 
 
     14.34214 
 
     ], 
 
     [ 
 
     51.731976333334124, 
 
     14.340528000002589 
 
     ], 
 
     [ 
 
     51.73196, 
 
     14.340535 
 
     ], 
 
     [ 
 
     51.731934, 
 
     14.340549 
 
     ], 
 
     [ 
 
     51.73190300000001, 
 
     14.340559 
 
     ], 
 
     [ 
 
     51.731873, 
 
     14.340569 
 
     ], 
 
     [ 
 
     51.731846000000004, 
 
     14.340582 
 
     ], 
 
     [ 
 
     51.731815, 
 
     14.340595 
 
     ], 
 
     [ 
 
     51.731789, 
 
     14.340612000000002 
 
     ], 
 
     [ 
 
     51.731762, 
 
     14.340625999999999 
 
     ], 
 
     [ 
 
     51.73173100000001, 
 
     14.340643 
 
     ], 
 
     [ 
 
     51.731705, 
 
     14.340658 
 
     ], 
 
     [ 
 
     51.731674, 
 
     14.340673 
 
     ], 
 
     [ 
 
     51.731651, 
 
     14.340681999999997 
 
     ], 
 
     [ 
 
     51.731621, 
 
     14.340693 
 
     ], 
 
     [ 
 
     51.73160200000001, 
 
     14.340705999999997 
 
     ], 
 
     [ 
 
     51.731586, 
 
     14.340723 
 
     ], 
 
     [ 
 
     51.731567, 
 
     14.340734000000003 
 
     ], 
 
     [ 
 
     51.731548, 
 
     14.340740000000002 
 
     ], 
 
     [ 
 
     51.73153299999999, 
 
     14.340748999999999 
 
     ], 
 
     [ 
 
     51.731514, 
 
     14.340759 
 
     ], 
 
     [ 
 
     51.731495, 
 
     14.340764000000002 
 
     ], 
 
     [ 
 
     51.731476, 
 
     14.340768 
 
     ], 
 
     [ 
 
     51.731472, 
 
     14.340768 
 
     ], 
 
     [ 
 
     51.731472, 
 
     14.340765999999997 
 
     ], 
 
     [ 
 
     51.731468, 
 
     14.340762 
 
     ], 
 
     [ 
 
     51.73146799999999, 
 
     14.340772999999999 
 
     ], 
 
     [ 
 
     51.731468, 
 
     14.340788 
 
     ], 
 
     [ 
 
     51.731472, 
 
     14.340809 
 
     ] 
 
    ] 
 
    }, 
 
    "properties": { 
 
    "trajectoryid": "05BC2B9E-7350-4D55-B4BB-026EC0B2E65B", 
 
    "color": "blue" 
 
    } 
 
}
html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map"></div>

+0

お元気ですか! GeoJSONがGeoJSONリファレンスでLongとLatを使用すると言われているところを教えてください。 –

+1

ドキュメントの[locations](http://geojson.org/geojson-spec.html#positions)を参照してください:「位置は数字の配列で表されます。少なくとも2つの要素が必要です。要素の順序は、x、y、zオーダー(東経、北緯、投影座標参照系の座標の高度、または**地理座標参照システムの座標の経度、緯度、高度**)に従わなければなりません。 – geocodezip

+0

ありがとうございました....私はそれを逃したのか分かりません –

関連する問題