Skip to content
/ osm Public
forked from CupIvan/osm

Commit

Permalink
подъезды: учёт домов building:part
Browse files Browse the repository at this point in the history
  • Loading branch information
CupIvan committed May 7, 2019
1 parent baed3e5 commit 337f3b1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
28 changes: 19 additions & 9 deletions entrance/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,16 @@
map.on('popupopen', function(e){ if (e.popup.options.osm_id) e.popup.setContent(make_popup(g_osm_objects[e.popup.options.osm_id])); });

/** цвет здания в зависимости от OSM ошибок */
var color = { ok: '#0F0', warn: '#FF0', error: '#F00', noactive: '#000', blue: '#00F' };
var color = { ok: '#0F0', warn: '#FF0', error: '#F00', noactive: '#000', blue: '#00F', gray: '#000' };
function getBuildingColor(a)
{
c = color.ok
if (!a.tags['building:levels']) c = color.warn;
if (!a.tags['addr:housenumber']) c = color.error;
if (a.tags['addr:city'] != 'Зеленоград')
if ( a.tags['addr:city'] != 'Зеленоград')
if (!a.tags['addr:street']) c = color.error;
if (!a.entrances.length) c = color.error;
if (a.tags['building:part']) c = color.gray;
return c
}

Expand Down Expand Up @@ -203,6 +204,7 @@
if (!a || !a.tags) return

if (a.tags['building'] == 'apartments') st += '<b>Многоэтажный жилой дом</b><br>'
if (a.tags['building:part'] == 'apartments') st += '<b>Многоэтажный жилой дом (часть здания)</b><br>'

if (!a.tags['building:levels'])
st += 'Укажите кол-во этажей <b>building:levels</b><br>'
Expand All @@ -212,12 +214,14 @@
if (a.tags['addr:city'])
st += 'Город: <i>'+a.tags['addr:city']+'</i><br>'

if (a.tags['addr:city'] != 'Зеленоград') // у Зеленограда нумерация без улицы
if ( a.tags['addr:city'] != 'Зеленоград') // у Зеленограда нумерация без улицы
if (!a.tags['building:part']) // улица пишется на основном контуре
if (!a.tags['addr:street'])
st += 'Укажите улицу <b>addr:street</b><br>'
else
st += 'Улица: <i>'+a.tags['addr:street']+'</i><br>'

if (!a.tags['building:part']) // дом пишется на основном контуре
if (!a.tags['addr:housenumber'])
st += 'Укажите номер дома <b>addr:housenumber</b><br>'
else
Expand All @@ -227,10 +231,10 @@
st += 'В жилом доме не найдено ни одного подъезда!<br>'
else
{
st += 'Подъездов '+a.entrances.length+': '
st += '<u>Подъездов '+a.entrances.length+':</u><br>'
a.entrances.sort(function(x,y){ return x.ref - y.ref })
for (i=0; i<a.entrances.length; i++)
st += '<i title="Подъезд №'+a.entrances[i].ref+'">' + (a.entrances[i]['addr:flats'] || '?') + '</i> '
st += '<nobr style="margin-right: 5px;">№'+a.entrances[i].ref+':<i>' + (a.entrances[i]['addr:flats'] || '?') + '</i></nobr> '
st += '<br>'
}

Expand All @@ -244,9 +248,10 @@
{
if (map.getZoom() >= 16)
{
osm.search({building: 'apartments', bounds: map.getBounds().toBBoxString().split(','), 'way': true, 'relation': true}, function(data){
var ck = 0
var _ = function(data){
if (!data.length) return $('info', 'Нет данных')
$('info', 'Данные загружены')
$('info', 'Данные загружены '+(ck/2*100)+'%')

var i, a, node
for (a=data[i=0]; i<data.length; a=data[++i])
Expand All @@ -262,16 +267,21 @@
markers[node.id] = createEntranceMarker(node)
}

if (a.tags['building:part'] && !a.entrances.length) continue

g_osm_objects[a.id] = a

c = getBuildingColor(a)
if (!lines[a.id] && c)
if (data[i].tags['type'] != 'building') // type == building пропускаем, т.к. будет builging:part
lines[a.id] = L.geoJSON(a.geoJSON, {style: {color: c, weight: 2, fillColor: c }})
.addTo(map)
.bindPopup('', { data: data[i] })
}
}
osm.search({'building': 'apartments', bounds: map.getBounds().toBBoxString().split(','), 'way': true, 'relation': true}, function(data){
ck++; _(data)
})
osm.search({'building:part': 'apartments', bounds: map.getBounds().toBBoxString().split(','), 'way': true, 'relation': true}, function(data){
ck++; _(data)
})
msg = 'Загрузка...';
} else
Expand Down
5 changes: 2 additions & 3 deletions i/osm.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,13 +156,12 @@ search: function(filter, handler){
data[i].center[0] /= x.length
data[i].center[1] /= x.length
}

data[i].geo = _coords(data[i].nodes)
data[i].nodes = x

if (a.type == 'way')
{
data[i].nodes = x
data[i].geoJSON.push(data[i].geo)
}
}
if (a.type == 'node')
data[i].center = [a.lat, a.lon]
Expand Down

0 comments on commit 337f3b1

Please sign in to comment.