Я взял список географических названий из вашего первого (неотредактированного) поста и написал скрипт 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).