Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
osmeRegions.geoJSON(71525/*Париж*/, {
lang: 'ru',
quality:0,
}, function (data, pure) {
if(mtype=='Y'){
collection = osmeRegions.toYandex(data, ymaps);
collection.add(geoMap);
geoMap.setBounds(collection.collection.getBounds(), {duration: 300});
}else{
collection = osmeRegions.toGoogle(data);
collection.add(geoMap);
Gzoom(geoMap,collection.collection);
}
});
osmeRegions.geoJSON('US-CA', {
lang: 'en',
quality:0,
scheme: {
165475:function (region){
// Для 165475(калифорния) выборка всех соседей СанФранциско.
return region.hasBorderWith(396487) && region.osmId!=396487;
}
},
postFilter: function (region){
// Оставляем только Калифорнию
return region.osmId==165475;
}
}
1. В данные попали не всегда верные файлы — например церковные приходыСейчас есть заново обработанные данные, чуть более корректные. Но пока не в проде.
2. В экспорт попали только те данные, которые смогли замкнуться в контур. Очень многие relations, к сожалению, не смогли.
3. За время подготовки данных многие relations изменились или были вообще стерты.
При этом всегда можно взять геометрию улиц, и собрать из них районы, кварталы, зоны обслуживания почтовых отделений…
Сейчас есть заново обработанные данные, чуть более корректные.
Потом понимаешь, что в NY у тебя находится в Бруклине, и таблице регионов у него admin_level=8, и совершенно не понятно почему, когда, кто виноват....
А вообще если OSM был бы не таким манерным и сам бы замержился с тем же GeoNames — мир стал бы лучше. Но нет, нельзя.....
А где сейчас лежит osme, если ещё где-то лежит, конечно?
osmeRegions.geoJSON('ru', {
lang: 'ru',
quality:2,
type: 'coast'
}, function (data, pure) {
var geojson = new L.geoJson(data).addTo(map);
});
# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- a/<html>regions.js (<b>12.10.2015 14:40:57</b>)</html>
+++ b/<html><b>Текущий файл</b></html>
@@ -93,6 +93,10 @@
while (index < byteVectorLength) {
var position = [clampy(read() * fx + bounds[0][0]), clampx(read() * fy + bounds[0][1])];
+ if (position[1]<0) {
+ position[1] = 360+position[1];
+ }
result.push([position[1], position[0]]);
}
return result;function getShortestPath (contour) {
var halfWorld = 180;
var result = [contour[0]], point = contour[0];
for (var i = 1, l = contour.length; i < l; ++i) {
var delta = point[1] - contour[i][1];
if (Math.abs(delta) > halfWorld) {
delta = delta < 0 ? -360:360;
} else {
delta = 0;
}
var nextPoint = [contour[i][0], contour[i][1] + delta]
result.push(nextPoint);
point = nextPoint;
}
return result;
}
Районы… Кварталы…