Я использую Leaflet вместе с leaflet-omnivore для отображения данных gpx.Я успешно протестировал код в Windows 10 с браузерами Firefox (65.0) и Edge (44.17763.10), но у меня возникла проблема с Chrome (71.0357898).
Когда я пытаюсь загрузить «недопустимый» файл gpx (см. Ниже), Firefox и Edge правильно сообщают о «готовом исключении» (см. Код ниже).
Однако с Chrome консоль сообщаетнеобработанная ошибка: -
Uncaught Error: Invalid LatLng object: (48.6, NaN)
, но не сработало исключение.
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>debug test</title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.3.1/leaflet-omnivore.min.js'></script>
<style>
body { margin:0; padding:0; }
#map { position:absolute; top:0; bottom:0; width:100%; }
</style>
</head>
<body>
<div id='map'></div>
<script>
const inspect = obj => { // output content of variables/objects to console
for (const prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.log(`${prop}:: ${obj[prop]}`)
}
}
}
var osmMapTiles = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18
});
var map = L.map('map');
osmMapTiles.addTo(map);
try {
var runLayer = omnivore.gpx('invalid.gpx')
.on('ready', function() {
try {
map.fitBounds(runLayer.getBounds());
} catch (exception) {
console.log("---- ready exception ----");
inspect(exception);
}
})
.on('error', function(error) {
console.log("---- error exception ----");
inspect(error);
})
.addTo(map);
} catch (exception) {
console.log("---- outer exception ----");
inspect(exception);
}
</script>
</body>
</html>
------------------- invalid.gpx -------------
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0" version="1.0" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd" creator="gpx.py -- https://github.com/tkrajina/gpxpy">
<trk>
<name>invalid</name>
<trkseg>
<trkpt lat="44.0" lon="1.0"></trkpt>
<trkpt lat="44.0" lon="5.8"></trkpt>
<trkpt lat="48.6" lon="5.8"></trkpt>
<trkpt lat="48.6"
----------------------------------------------
Это проблема с Chrome - или я что-то не так делаю?
Iс тех пор пробовал это с Chrome на Mac, и он ведет себя правильно.