Название местоположения из SQL Server и график на карте листовки - PullRequest
0 голосов
/ 04 сентября 2018

Когда я пытался отобразить широту и долготу на карте, он возвращает

leaflet.js: 5 Uncaught Ошибка: недопустимый объект LatLng: (NaN, NaN)

var obj =[{"lon":"27.748936","lat":"85.318788"},{"lon":"28\u00b0 02' 06.32","lat":"82\u00b0 28' 54.74"},{"lon":"83\u00b027'51.15","lat":"27\u00b042'28.5"},{"lon":"28\u00b002'06.1","lat":"082\u00b028'54.1"},{"lon":" 83\u00b027'7.00","lat":" 27\u00b030'21.02"},{"lon":"83\u00b027'51.15","lat":"27\u00b042'28.5"},{"lon":"87\u00b0 42' 12.83","lat":"26\u00b0 40' 10.11"},{"lon":"87\u00b0 42' 12.83","lat":"26\u00b0 40' 10.11"},{"lon":"N 27\u00b030'21.6","lat":"E 083\u00b027'06.6"},{"lon":"80.5794","lat":"29.3008"},{"lon":" 87\u00b042'13.92","lat":" 26\u00b040'11.44"},},{"lon":null,"lat":null},{"lon":null,"lat":null},{"lon":null,"lat":null},{"lon":null,"lat":null}]
console.log(obj);




var map = L.map('map').setView([28.41752832637288,84.13003176934866], 13);

var countrieslayer=L.geoJson(nepal).addTo(map);
map.fitBounds(countrieslayer.getBounds());
L.geoJson(obj.lat,obj.lon).addTo(map);


var marker = L.marker([obj]).addTo(map);
// var point=[27.6493, 85.3059];
// var marker=L.marker(point).addTo(map);
// L.geoJSON(sites, {
//     // style: myStyle
// }).addTo(map);

1 Ответ

0 голосов
/ 06 сентября 2018

Я взял список географических названий из вашего первого (неотредактированного) поста и написал скрипт Python с библиотекой Geocoder , который будет извлекать координаты из OpenStreetMap.

Мне пришлось внести некоторые коррективы, некоторые места не могли быть найдены изначально, я думаю, это потому, что вы действительно можете искать их только по английским именам (или, возможно, были некоторые опечатки). Поэтому я изменил это:

Bheemdatta - Bhimdatta
Dasharathchand - Dasharathchanda
Kirt - (I haven't found this place?)
Saphebagar - Sanfebagar

Сценарий геокодера проходит через каждый адрес, а затем сохраняет результаты в "results.geojson"

import json
import geocoder
import time

places = ["Amargadhi","Banepa","Bhaktapur","... etc ..."]

# stub for building the GeoJSON    
geojson = {
    "type": "FeatureCollection",
    "features": []
}

for place in places:
    g = geocoder.osm('{} Nepal'.format(place)) # search for e.g. "Amargadhi Nepal"
    print place, g.latlng

    # create a point feature for the GeoJSON structure
    pointfeature = {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [g.lng, g.lat]
        },
        "properties": {
            "name": place,
            "address": g.address,
        }
    }

    # if there's a result, add it to the GeoJSON FeatureCollection
    if g.latlng:
        geojson["features"].append(pointfeature)

    time.sleep(1) # wait 1 second

print "Saving to results.geojson"

with open("results.geojson","w") as f:
    f.write(json.dumps(geojson, indent=2))
    f.close()

Затем вы можете использовать полученный GeoJSON на вашей карте Leaflet:

var map = L.map('map').setView([28.41752832637288,84.13003176934866], 10);

L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '© OpenStreetMap contributors'
}).addTo(map);

var obj = nepaldata; // replace "nepaldata" and insert GeoJSON here
var geojsonLayer = L.geoJson(obj);
geojsonLayer.addTo(map);
geojsonLayer.eachLayer(function(layer) {
  console.log(layer);
    layer.bindPopup("<b>"+ layer.feature.properties.name +"</b><br/><br/>"+ layer.feature.properties.address);
});
map.fitBounds(geojsonLayer.getBounds());

Вы можете увидеть работающую демонстрацию на Plunkr . Я также поместил там полный список мест и координат (см. Файл nepal.js).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...