-
Notifications
You must be signed in to change notification settings - Fork 0
/
circle.js
360 lines (324 loc) · 35.2 KB
/
circle.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
ymaps.ready(init);
function init() {
let myMap = new ymaps.Map("map", {
center: [55.75, 37.62],
zoom: 11,
controls: ['default']
}, {
searchControlProvider: 'yandex#search'
}),
/*
Координаты и наименования станций Московского метрополитена. Названия записаны с сокращением на латинском алфавите.
Координаты и названия идут по порядку соответственно друг с другом.
*/
// Сокольническая линия (СокЛ/SOKL)
SOKLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Сокольническая',
preset: 'islands#rapidTransitIcon',
iconColor: '#EF161E'
}),
SOKLCoords = [[55.81469988405924, 37.73411003421179], [55.803866768317526, 37.744903243287645], [55.79617057731879, 37.715093172295944], [55.78918920050935, 37.68010643790499], [55.77983037196011, 37.666421807511355], [55.77530129074847, 37.65585926841038], [55.76871534219331, 37.64941123793876], [55.764832193177895, 37.63870385955125], [55.759539113840354, 37.62690213988569], [55.75698002931282, 37.615379369957715], [55.751710083020754, 37.610465563042354], [55.74529563606518, 37.603792227013244], [55.735584205765484, 37.59429184268231], [55.72738101405113, 37.5806233055423], [55.723257575464274, 37.5638648636172], [55.710430341349834, 37.559337294799896], [55.69258145923935, 37.53473607371516], [55.67688270546925, 37.50655142138661], [55.66363385382205, 37.4831303722685], [55.645642162032395, 37.472927249175676], [55.63306852794755, 37.4415346748653], [55.62128010025635, 37.42332247565411], [55.60106394889708, 37.4081304437935], [55.58644034325031, 37.43295697043524], [55.569221583687394, 37.458759821158424], [55.55958476504694, 37.46920970748041]],
SOKLName = ['Бульвар Рокоссовского', 'Черкизовская', 'Преображенская Площадь', 'Сокольники', 'Красносельская', 'Комсомольская', 'Красные Ворота', 'Чистые пруды', 'Лубянка', 'Охотный Ряд', 'Библиотека им. Ленина', 'Кропоткинская', 'Парк Культуры', 'Фрунзенская', 'Спортивная', 'Воробьёвы горы', 'Университет', 'Проспект Вернадского', 'Юго-Западная', 'Тропарёво', 'Румянцево', 'Саларьево', 'Филатов Луг', 'Прокшино', 'Ольховая', 'Коммунарка'],
// Замоскворецкая линия (ЗЛ/ZL)
ZLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Замоскворецкая',
preset: 'islands#rapidTransitIcon',
iconColor: '#2DBE2C'
}),
ZLCoords = [[55.63284699529384, 37.766081965664], [55.613675220283184, 37.74478522608559], [55.610808965181455, 37.7186229593536], [55.613256225755826, 37.694778121211556], [55.62141669982045, 37.669307864406015], [55.6357359076602, 37.6565512783311], [55.65506669330532, 37.64877823660579], [55.678395272208846, 37.66398636171999], [55.69436610795324, 37.66435650656396], [55.70751364277002, 37.65717891524004], [55.73041730268427, 37.637791908480246], [55.74229984528585, 37.629283941484914], [55.75764552610856, 37.61941341231008], [55.76504994764033, 37.604865110613254], [55.77014269242669, 37.595659769274135], [55.77677677457532, 37.58361128637921], [55.78983601038001, 37.55802301237704], [55.800310450813626, 37.53299263785004], [55.804969549378804, 37.515365160204034], [55.81900993016074, 37.49779132673839], [55.83990400064192, 37.48675135443304], [55.85503006736799, 37.476151264406084], [55.86536623217727, 37.47555044958661], [55.87842579419772, 37.481172359681715]],
ZLName = ['Алма-Атинская', 'Красногвардейская', 'Домодедовская', 'Орехово', 'Царицыно', 'Кантемировская', 'Каширская', 'Коломенская', 'Технопарк', 'Автозаводская', 'Павелецкая', 'Новокузнецкая', 'Театральная', 'Тверская', 'Маяковская', 'Белорусская', 'Динамо', 'Аэропорт', 'Сокол', 'Войковская', 'Водный стадион', 'Речной вокзал', 'Беломорская', 'Ховрино'],
// Арбатско-Покровская линия (АПЛ/APL)
APLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Арбатско-Покровская',
preset: 'islands#rapidTransitIcon',
iconColor: '#0078BE'
}),
APLCoords = [[55.80934714328083, 37.798563516837014], [55.794481258750345, 37.79934672186925], [55.787750456788, 37.781601227026606], [55.78848797024382, 37.749790228109916], [55.783246483976555, 37.7193417913727], [55.78181356655632, 37.7038064367579], [55.772371315537015, 37.67880288432134], [55.7589643921191, 37.65990403960233], [55.75636896887104, 37.62329188654884], [55.75233029061617, 37.60338453124024], [55.74776774294417, 37.58377758334134], [55.7443787665269, 37.56715325186695], [55.73631060302135, 37.51728562186191], [55.729590899018746, 37.4705722696584], [55.73064130767995, 37.445997870663774], [55.74102278333462, 37.416364825467156], [55.75668357452776, 37.408092892865135], [55.803670376875985, 37.40302888224483], [55.82520082360911, 37.38535848925451], [55.835544955716784, 37.38178578684656], [55.84652615579186, 37.360306657055254], [55.856086137153156, 37.35437361071424]],
APLName = ['Щёлковская', 'Первомайская', 'Измайловская', 'Партизанская', 'Семёновская', 'Электрозаводвская', 'Бауманская', 'Курская', 'Площадь Революции', 'Арбатская', 'Смоленская', 'Киевская', 'Парк Победы', 'Славянский бульвар', 'Кунцевская', 'Молодёжная', 'Крылатское', 'Строгино', 'Мякинино', 'Волоколамская', 'Митино', 'Пятницкое шоссе'],
// Филёвская линия (ФЛ/FL). Без ответвления в Москва-сити.
FLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Филёвская',
preset: 'islands#rapidTransitIcon',
iconColor: '#00BEFD'
}),
FLCoords = [[55.75239079262534, 37.609430230346724], [55.75202774536463, 37.601211941925094], [55.74879647523281, 37.581900037017824], [55.74360409628221, 37.56565657922364], [55.73874998634305, 37.548275864807096], [55.74000896581783, 37.53425327607711], [55.7460581566117, 37.51489309140745], [55.74377355532393, 37.497657216277595], [55.73956409055386, 37.483296669211796], [55.73601701284415, 37.46704248258151], [55.730710924548355, 37.44590667554387]],
FLName = ['Александровский сад', 'Арбатская', 'Смоленская', 'Киевская', 'Студенческая', 'Кутузовская', 'Фили', 'Багратионовская', 'Филёвский парк', 'Пионерская', 'Кунцевская'],
// Филёвская линия 4А (ФЛ4А/FL4A). Ответвление в Москва-Сити.
FL4ACollection = new ymaps.GeoObjectCollection(null, {
name: 'Филёвская',
preset: 'islands#rapidTransitIcon',
iconColor: '#00BEFD'
}),
FL4ACoords = [[55.75010135659821, 37.54253800939458], [55.747535598555146, 37.535092197168986]],
FL4AName = ['Выставочная', 'Международная'],
// Кольцевая линия (КЛ/KL)
KLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Кольцевая',
preset: 'islands#rapidTransitIcon',
iconColor: '#8D5B2D'
}),
KLCoords = [[55.729137962729816, 37.62263413499074], [55.73158385576803, 37.63608809540941], [55.742461371956225, 37.65338297913736], [55.75736534262791, 37.65989538262548], [55.77461606536855, 37.65583988259472], [55.779616857617874, 37.63350244591874], [55.77954429932074, 37.60165926049384], [55.77604924815585, 37.58363481591362], [55.76031157314186, 37.57718678544177], [55.743907845967634, 37.56826039384017], [55.73532504762005, 37.592593394023275], [55.72923483242469, 37.611218653422654]],
KLName = ['Добрынинская', 'Павелецкая', 'Таганская', 'Курская', 'Комсомольская', 'Проспект Мира', 'Новослободская', 'Белорусская', 'Краснопресненская', 'Киевская', 'Парк Культуры', 'Октябрьская'],
// Калужско-Рижская линия (КРЛ/KRL)
KRLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Калужско-Рижская',
preset: 'islands#rapidTransitIcon',
iconColor: '#ED9121'
}),
KRLCoords = [[55.88704329207033, 37.661534822678895], [55.86947458819447, 37.66444233725096], [55.85517490111202, 37.652592337823094], [55.845240446509244, 37.63839808771611], [55.821136084301635, 37.640994466042415], [55.80776715610094, 37.638784325814036], [55.79247755202308, 37.636048472618846], [55.781849841762224, 37.63306585619421], [55.77266159933381, 37.632277286743744], [55.76570018600763, 37.636606372093766], [55.754913880881205, 37.63258842298938], [55.74087752043706, 37.625593221878425], [55.73028410941008, 37.61157063314857], [55.718712806314244, 37.607944286560304], [55.70759239213902, 37.586164749358936], [55.687790673467006, 37.57355836698914], [55.67787997350259, 37.56295827696221], [55.67024671250077, 37.5546112425078], [55.65681363523141, 37.540427721236995], [55.64271453897667, 37.525965250228644], [55.63330826273577, 37.51906660864225], [55.61843565122895, 37.50678209135403], [55.60621765948763, 37.53357199499473], [55.60205404600867, 37.5528785354839]],
KRLName = ['Медведково', 'Бабушкинская', 'Свиблово', 'Ботанический сад', 'ВДНХ', 'Алексеевская', 'Рижская', 'Проспект Мира', 'Сухаревская', 'Тургеневская', 'Китай-город', 'Третьяковская', 'Октябрьская', 'Шаболовская', 'Ленинский проспект', 'Академическая', 'Профсоюзная', 'Новые Черёмушки', 'Калужская', 'Беляево', 'Коньково', 'Тёплый стан', 'Ясенево', 'Новоясеневская'],
// Таганско-Краснопресненская линия (ТКЛ/TKL)
TKLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Таганско-Краснопресненская',
preset: 'islands#rapidTransitIcon',
iconColor: '#800080'
}),
TKLCoords = [[55.67442124233729, 37.85823193857501], [55.68539354537598, 37.85587159464176], [55.7017613837397, 37.852288163397716], [55.71562714890884, 37.817923701498884], [55.71663251241562, 37.79321519205365], [55.70541760349475, 37.76586738893768], [55.70886449532145, 37.73113814661272], [55.72504687049525, 37.68688169786688], [55.73164022627809, 37.66641107866515], [55.739424879676115, 37.65303222009874], [55.75509841548159, 37.63308731386367], [55.765691111842656, 37.6057502395839], [55.76082766256438, 37.581191933843456], [55.76454184404642, 37.56168690988688], [55.77358384629501, 37.5467630989281], [55.77745402613676, 37.51945821115642], [55.79356554774005, 37.49339786836764], [55.808673463550655, 37.46407595941675], [55.81861730159362, 37.43479696581013], [55.826299978021616, 37.436985648366246], [55.85072100605011, 37.43948546716792], [55.86067215549877, 37.43647066423515]],
TKLName = ['Котельники', 'Жулебино', 'Лермонтовский проспект', 'Выхино', 'Рязанский проспект', 'Кузьминки', 'Текстильщики', 'Волгоградский проспект', 'Пролетарская', 'Таганская', 'Китай-Город', 'Пушкинская', 'Баррикадная', 'Улица 1905 года', 'Беговая', 'Полежаевская', 'Октябрьское Поле', 'Щукинская', 'Спартак', 'Тушинская', 'Сходненская', 'Планерная'];
// Калининско-Солнцевская линия (КСЛ/KSL)
KSLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Калининско-Солнцевская',
preset: 'islands#rapidTransitIcon',
iconColor: '#FFD702'
}),
KSLCoords = [[55.74502329633305, 37.86400405237246], [55.75168587460723, 37.81720486948053], [55.75131676977507, 37.786295092792855], [55.758014568057824, 37.75022474596044], [55.75162536570457, 37.71704045602805], [55.746602811592794, 37.680058158130564], [55.74088357098095, 37.656401074618856], [55.74094409653996, 37.62642470666867], [55.74888422078579, 37.538566268176695], [55.736168346999634, 37.51728025743444], [55.723860067417036, 37.49760357210074], [55.70676852934277, 37.515306151599226], [55.69753524854074, 37.4985477096741], [55.689057361922224, 37.4830767280761], [55.67057414073646, 37.44896975824251], [55.65962192329308, 37.41725531885035], [55.64950991853564, 37.391098416537076], [55.64769591016619, 37.37005916902416], [55.63952879409914, 37.35509244272102], [55.63394553157712, 37.33470765420766]],
KSLName = ['Новокосино', 'Новогиреево', 'Перово', 'Шоссе Энтузиастов', 'Авиамоторная', 'Площадь Ильича', 'Марксистская', 'Третьяковская', 'Деловой центр', 'Парк Победы', 'Минская', 'Ломоносовский проспект', 'Раменки', 'Мичуринский проспект', 'Озёрная', 'Говорово', 'Солнцево', 'Боровское шоссе', 'Новопеределкино', 'Рассказовка'];
// Серпуховско-Тимирязевская линия (СТЛ/STL)
STLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Серпуховско-Тимирязевская',
preset: 'islands#rapidTransitIcon',
iconColor: '#999999'
}),
STLCoords = [[55.56912431780856, 37.57686017], [55.58252075116153, 37.59652612279499], [55.59523825160149, 37.60084984372691], [55.61268845439248, 37.60432598661018], [55.62220898014254, 37.608789182410916], [55.640599846865626, 37.60617134641215], [55.65282527817897, 37.598339296088824], [55.66266957587235, 37.605549073920756], [55.672832735482835, 37.61068818639297], [55.68296293697873, 37.62231824468171], [55.70867974520568, 37.62268302510674], [55.726811873480244, 37.625054097876415], [55.73678275704738, 37.6184102661465], [55.75046661115266, 37.60932294200393], [55.765821163612564, 37.608099854693045], [55.771772595754, 37.62075988124331], [55.78175008380823, 37.59865847896058], [55.79370759490953, 37.588165677294256], [55.807631211799894, 37.58132067988817], [55.81863240807319, 37.5753447182029], [55.83498645742109, 37.57382122348213], [55.848134741974135, 37.59057966540733], [55.86367993371546, 37.60517088244832], [55.88385643222263, 37.60303584407234], [55.89812140486763, 37.5872537262287]],
STLName = ['Бульвар Дмитрия Донского', 'Аннино', 'Улица Академика Янгеля', 'Пражская', 'Южная', 'Чертановская', 'Севастопольская', 'Нахимовский проспект', 'Нагорная', 'Нагатинская', 'Тульская', 'Серпуховская', 'Полянка', 'Боровицкая', 'Чеховская', 'Цветной Бульвар', 'Менделеевская', 'Савёловская', 'Дмитровская', 'Тимирязевская', 'Петровско-Разумовская', 'Владыкино', 'Отрадное', 'Бибирево', 'Алтуфьево'];
// Люблинско-Дмитровская линия (ЛДЛ/LDL)
LDLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Люблинско-Дмитровская',
preset: 'islands#rapidTransitIcon',
iconColor: '#99CC00'
}),
LDLCoords = [[55.61112474562353, 37.74480668374846], [55.62135598440206, 37.743690884798234], [55.63333253755744, 37.74364796945377], [55.650092324429906, 37.743540681093236], [55.65945816212572, 37.75052515336798], [55.67561258179848, 37.76176897355833], [55.69082096239591, 37.75323954889097], [55.69303898622633, 37.72843447992121], [55.70627783854432, 37.68557277986302], [55.717798336048915, 37.676442540376314], [55.73229404985161, 37.665230906694], [55.746639120545915, 37.6808199054884], [55.755833522625366, 37.65964654752475], [55.76566691507966, 37.63703016111101], [55.76787764870057, 37.62196151086532], [55.78142962742966, 37.61469808885287], [55.79515215349654, 37.61633960076961], [55.813286245709435, 37.60283199617069], [55.82290879381584, 37.5873932010809], [55.83482342681934, 37.57381049462911], [55.846281688528535, 37.575838244644586], [55.856071045710145, 37.56160107919352], [55.86635263550407, 37.54712787934912]],
LDLName = ['Зябликово', 'Шипиловская', 'Борисовская', 'Марьино', 'Братиславская', 'Люблино', 'Волжская', 'Печатники', 'Кожуховская', 'Дубровка', 'Крестьянская Застава', 'Римская', 'Чкаловская', 'Сретенский бульвар', 'Трубная', 'Достоевская', 'Марьина Роща', 'Бутырская', 'Фонвизинская', 'Петровско-Разумовская', 'Окружная', 'Верхние Лихоборы', 'Селигерская'];
// Большая кольцевая линия (БКЛ/BKL)
BKLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Большая кольцевая',
preset: 'islands#rapidTransitIcon',
iconColor: '#82C0C0'
}),
BKLCoords = [[55.79355429983362, 37.58443411420731], [55.79255092560996, 37.55842741559913], [55.786596634198936, 37.533203922023084], [55.77698925669809, 37.52178844045561], [55.77566495705776, 37.48483832906625], [55.76131850586603, 37.47127708028694], [55.75737411720662, 37.523719630946104], [55.748733780332515, 37.53878291677372]],
BKLName = ['Савёловская', 'Петровский парк', 'ЦСКА', 'Хорошёвская', 'Народное Ополчение', 'Мнёвники', 'Шелепиха', 'Деловой центр'];
// Бутовская линия (БутЛ/ButL)
ButLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Бутовская',
preset: 'islands#rapidTransitIcon',
iconColor: '#A1B3D4'
}),
ButLCoords = [[55.60039576214366, 37.55637613603095], [55.58195336941205, 37.57725652288619], [55.56912211850714, 37.576795182935506], [55.548063910957744, 37.55472060274279], [55.54501339259735, 37.541567049733615], [55.54209647325122, 37.53207739423889], [55.53771916565097, 37.514991722814]],
ButLName = ['Битцевский парк', 'Лесопарковая', 'Улица Старокачаловская', 'Улица Скобелевская', 'Бульвар Адмирала Ушакова', 'Улица Горчакова', 'Бунинская линия'];
/*
Координаты и наименования станций Московского центрального кольца (МЦК/MCK).
*/
MCKCollection = new ymaps.GeoObjectCollection(null, {
name: 'Московское центральное кольцо',
preset: 'islands#rapidTransitIcon',
iconColor: '#B12A29'
}),
MCKCoords = [[55.84558866904282, 37.63968225548853], [55.839153509280855, 37.66868229935755], [55.82939006628277, 37.70212408135518], [55.81640455744306, 37.73860212395755], [55.80308838251133, 37.74615522454343], [55.7886553481114, 37.74302240441397], [55.769947271161925, 37.74540420601917], [55.758865709346566, 37.746176682215456], [55.746425429728724, 37.736799679499356], [55.731650449151566, 37.72780891488144], [55.724070114810154, 37.71669384072367], [55.71789940657175, 37.695482931833816], [55.71221834048928, 37.67613884041839], [55.70540360048304, 37.6612901313113], [55.69873308626959, 37.64930602143308], [55.689728199130144, 37.61699076722157], [55.689900923458495, 37.60539825985908], [55.70699684218395, 37.586295567254936], [55.72057612420165, 37.56115790436729], [55.73953194447887, 37.5342392546937], [55.747605490667766, 37.53187891076059], [55.75687528989134, 37.52608533928839], [55.77716189298641, 37.507309876184095], [55.78919335854063, 37.504177056054715], [55.79806644042626, 37.49984260628664], [55.81366798513031, 37.48688217232657], [55.82518082165152, 37.49471422264997], [55.840529974100455, 37.52134319374977], [55.84783408196566, 37.55318637917451], [55.8487877397655, 37.57206913063931], [55.8474477834874, 37.590329609612695]];
MCKName = ['Ботанический сад', 'Ростокино', 'Белокаменная', 'Бульвар Рокоссовского', 'Локомотив', 'Измайлово', 'Соколиная Гора', 'Шоссе Энтузиастов', 'Андроновка', 'Нижегородская', 'Новохохловская', 'Угрешская', 'Дубровка', 'Автозаводская', 'ЗИЛ', 'Верхние Котлы', 'Крымская', 'Площадь Гагарина', 'Лужники', 'Кутузовская', 'Деловой центр', 'Шелепиха', 'Хорошёво', 'Зорге', 'Панфиловская', 'Стрешнево', 'Балтийская', 'Коптево', 'Лихоборы', 'Окружная', 'Владыкино'];
// Некрасовская линия (НекЛ/NekL)
NekLCollection = new ymaps.GeoObjectCollection(null, {
name: 'Некрасовская',
preset: 'islands#rapidTransitIcon',
iconColor: '#DE64A1'
}),
NekLCoords = [[55.703010287388445, 37.928051911107175], [55.70854731629682, 37.900607548466695], [55.71066438546665, 37.87853296827403], [55.70420075440088, 37.85039123128976], [55.70556686895341, 37.81728740762785], [55.71870759215556, 37.781200967541274], [55.7272607591257, 37.75222238134426], [55.7315048535539, 37.73088272642169], [55.75374698329541, 37.71911855768173], [55.76453058798298, 37.70503696035338], [55.77987958031928, 37.70335253309187]],
NekLName = ['Некрасовка', 'Лухмановская', 'Улица Дмитриевского', 'Косино', 'Юго-Восточная', 'Окская', 'Стахановская', 'Нижегородская', 'Авиамоторная', 'Лефортово', 'Электрозаводская'];
/*
Координаты и наименования станций Белорусско-Савеловского Московского центрального диаметра (МЦД1/MCD1).
*/
MCD1Collection = new ymaps.GeoObjectCollection(null, {
name: 'Белорусско-Савёловский диаметр',
preset: 'islands#rapidTransitIcon',
iconColor: '#F6A700'
}),
MCD1Coords = [[55.672624696262126, 37.28309866021637], [55.682597349701055, 37.31460925172327], [55.70000851117785, 37.34265442918291], [55.71586146684611, 37.375355921492485], [55.72384304705775, 37.39775773118479], [55.726864477304716, 37.41784211228819], [55.7268977780717, 37.44818326066394], [55.73042752565168, 37.4723285062165], [55.74429517852184, 37.51492198537281], [55.75408611368809, 37.53173407147808], [55.7731737593973, 37.54927571843528], [55.77701374553482, 37.58076485226998], [55.79533159770287, 37.58920844624874], [55.81843420882253, 37.576585970624514], [55.84767111456412, 37.574365101559934], [55.865979729561225, 37.57308837006873], [55.882265543350364, 37.56763812135038], [55.89720023718682, 37.553594074948336], [55.904071753951534, 37.538584433300784], [55.9249018545765, 37.527673207028094], [55.940078994791364, 37.52000208924541], [55.95263777812602, 37.51232024262675], [55.9709689049424, 37.50463839600794], [55.98391459658645, 37.49875899384722], [56.01314669865826, 37.48496171067457]],
MCD1Name = ['Одинцово', 'Баковка', 'Сколково', 'Немчиновка', 'Сетунь', 'Рабочий Посёлок', 'Кунцевская', 'Славянский бульвар', 'Фили', 'Тестовская', 'Беговая', 'Белорусская', 'Савёловская', 'Тимирязевская', 'Окружная', 'Дегунино', 'Бескудниково', 'Лианозово', 'Марк', 'Новодачная', 'Долгопрудный', 'Водники', 'Хлебниково', 'Шереметьевская', 'Лобня'];
/*
Координаты и наименования станций Курско-Рижского Московского центрального диаметра (МЦД1/MCD1).
*/
MCD2Collection = new ymaps.GeoObjectCollection(null, {
name: 'Курско-Рижский диаметр',
preset: 'islands#rapidTransitIcon',
iconColor: '#E83F83'
}),
MCD2Coords = [[55.431397736421026, 37.56551917623395], [55.47047139319212, 37.55547698568209], [55.4860339266038, 37.55509074758396], [55.51017592659006, 37.56215032171103], [55.54166484766123, 37.57069047521437], [55.571183242930445, 37.61139567922419], [55.58970751721943, 37.615043483484406], [55.60290253015007, 37.63195212911425], [55.61850965820086, 37.66883786748693], [55.64037950001374, 37.689142189729566], [55.64986900538339, 37.701394520509616], [55.66140316798858, 37.71701570581223], [55.67409499049422, 37.728098593461716], [55.685031017958046, 37.733881436097754], [55.70778435504339, 37.72949334214926], [55.72465140959009, 37.71346446107611], [55.73419909806292, 37.70195241998418], [55.7456447567161, 37.68835898469667], [55.74831351336196, 37.682275734650894], [55.7582667820019, 37.66236301492429], [55.77607343874481, 37.651709280716865], [55.79405325729708, 37.63859864305195], [55.80794653935017, 37.578345499740685], [55.80555983558271, 37.55321856568949], [55.81551655430306, 37.526525221573145], [55.815299080466396, 37.48991843293778], [55.81418752858009, 37.47640009950268], [55.82676009901212, 37.44205709527494], [55.83313391816614, 37.399002276168694], [55.83217987465946, 37.3829090220793], [55.82246903184325, 37.36091490815718], [55.8152114863058, 37.34124895165994], [55.81435365907324, 37.30395551751684], [55.822749883201766, 37.24855180810502], [55.83240027271815, 37.21887584756421], [55.8416377544333, 37.184822521911094]],
MCD2Name = ['Подольск', 'Силикатная', 'Остафьево', 'Щербинка', 'Бутово', 'Битца', 'Красный Строитель', 'Покровское', 'Царицыно', 'Москворечье', 'Курьяново', 'Перерва', 'Депо', 'Люблино', 'Текстильщики', 'Новохохловская', 'Калитники', 'Москва-Товарная', 'Серп и Молот', 'Курская', 'Каланчёвская', 'Рижская', 'Дмитровская', 'Гражданская', 'Красный Балтиец', 'Стрешнево', 'Покровское-Стрешнево', 'Тушинская', 'Трикотожная', 'Волоколамская', 'Пенягино', 'Павшино', 'Красногорская', 'Опалиха', 'Аникеевка', 'Нахабино'];
/* Variables */
let radius = 900;
let dotsClicked = 0;
let draggableCircle = 0;
let fillOpacityCircle = 0.3;
let strokeOpacityCircle = 0.5;
let collections = [SOKLCollection, ZLCollection, APLCollection, FLCollection, FL4ACollection, KLCollection, KRLCollection, TKLCollection, KSLCollection, STLCollection, LDLCollection, BKLCollection, ButLCollection, MCKCollection, NekLCollection, MCD1Collection, MCD2Collection];
let stationCoords = [SOKLCoords, ZLCoords, APLCoords, FLCoords, FL4ACoords, KLCoords, KRLCoords, TKLCoords, KSLCoords, STLCoords, LDLCoords, BKLCoords, ButLCoords, MCKCoords, NekLCoords, MCD1Coords, MCD2Coords];
let stationNames = [SOKLName, ZLName, APLName, FLName, FL4AName, KLName, KRLName, TKLName, KSLName, STLName, LDLName, BKLName, ButLName, MCKName, NekLName, MCD1Name, MCD2Name];
let dotsCollection = [];
let lineCollection = [];
/*
Functions
*/
const drawDots = (collection, coords, name) => {
let collect = collection;
let stationName = name;
for (let i = 0, l = coords.length; i < l; i++) {
collect.add(new ymaps.Placemark(coords[i],{iconCaption: name[i]}));
myMap.geoObjects.add(collect);
}};
const drawCircle = (collection, coords, name, radius) => {
let collect = collection;
let circleColour = collect.options._options.iconColor;
let stationName = name;
for (let i = 0, l = coords.length; i < l; i++) {
collect.add(new ymaps.Circle(
[coords[i], radius],
{hintContent: `Радиус в ${radius} метрах от станции «${name[i]}».`},
{fillColor: circleColour, fillOpacity: fillOpacityCircle, strokeColor: circleColour, strokeOpacity: strokeOpacityCircle, strokeWidth: 5}
));
myMap.geoObjects.add(collect);
}};
const drawAllCircle = (radius) => {
for (let i = 0; i < collections.length; i++) {
collections[i].removeAll();
lineCollection[i] = 1;
drawCircle(collections[i], stationCoords[i], stationNames[i], radius);
};
document.querySelector('.map_radius').value = radius;
}
const drawAllDots = () => {
for (let i = 0; i < collections.length; i++) {
drawDots(collections[i], stationCoords[i], stationNames[i]);
};
dotsClicked = 1;
document.querySelector('.map_dots').innerHTML = 'Убрать точки и круги';
}
const addLinesSelectors = () => {
for (let i = 0, l = collections.length; i < l; i++) {
// the next code determines what "i" is it and puts the right number Moscow's rapid transport system.
var line = (num) => {
switch(num) {
case 0:
case 1:
case 2:
case 3:
return num + 1;
case 4:
return '4A';
case 13:
case 14:
return num + 1;
case 15:
return 'D1';
case 16:
return 'D2';
default:
return num;
}
}
const lineName = (num) => {
if (num === 13 || num === 15 || num === 16) {
return collections[i].options._options.name;
} else {
return collections[i].options._options.name + ' линия';
}
}
var metroline =
`
<div class="map_metro-line">
<div style="background: ${collections[i].options._options.iconColor}" class="metro-line__circle">${line(i)}</div>
<div style="background: ${collections[i].options._options.iconColor}" class="metro-line__line"></div>
<div class="metro-line__name">${lineName(i)}</div>
</div>
`;
document.querySelector('.cp-tab3-content__lines').insertAdjacentHTML('beforeend', metroline);
};
addRemoveLine();
}
const addRemoveLine = () => {
for (let i = 0, l = collections.length; i < l; i++) {
document.querySelectorAll('.map_metro-line')[i].onclick = function () {
if (lineCollection[i] === 1) {
collections[i].removeAll();
lineCollection[i] = 0;
document.querySelectorAll('.map_metro-line')[i].classList.add('filter-gray')
} else {
drawCircle(collections[i], stationCoords[i], stationNames[i], radius);
lineCollection[i] = 1;
document.querySelectorAll('.map_metro-line')[i].classList.remove('filter-gray')
}
}
}
}
/*
Event listeners:
*/
document.querySelector('.map_radius').onchange = function () {
let userRadius = document.querySelector('.map_radius').value;
drawAllCircle(userRadius);
};
const radiusBtn = document.querySelectorAll('.map_radius-btn');
for (i = 0; i < radiusBtn.length; i++) {
radiusBtn[i].addEventListener('click', function() {
drawAllCircle(this.innerHTML);
});
}
// These two event listeners below might be worth to unite in one function
document.querySelector('.map_fillOpacity').onchange = function () {
let value = fillOpacityCircle;
let newValue = document.querySelector('.map_fillOpacity').value;
if (newValue > 0.09 && newValue <= 1.0) {
fillOpacityCircle = newValue;
drawAllCircle(radius);
} else {
document.querySelector('.map_fillOpacity').value = value;
}
}
document.querySelector('.map_strokeOpacity').onchange = function () {
let value = strokeOpacityCircle;
let newValue = document.querySelector('.map_strokeOpacity').value;
if (newValue > 0.09 && newValue <= 1.0) {
strokeOpacityCircle = newValue;
drawAllCircle(radius);
} else {
document.querySelector('.map_strokeOpacity').value = value;
}
}
document.querySelector('.map_draggableCircle').onclick = function () {
if (draggableCircle === 0) {
for (let i = 0, l = collections.length; i < l; i++) {
collections[i].options.set('draggable', true);
};
draggableCircle = 1;
document.querySelector('.map_draggableCircle').innerHTML = 'Зафиксировать круги';
} else {
for (let i = 0, l = collections.length; i < l; i++) {
collections[i].options.set('draggable', false);
};
draggableCircle = 0;
document.querySelector('.map_draggableCircle').innerHTML = 'Перетаскивать круги';
}
}
document.querySelector('.map_dots').onclick = function () {
if (dotsClicked === 0) {
drawAllDots();
} else {
dotsClicked = 0;
document.querySelector('.map_dots').innerHTML = 'Отметить станции точками';
for (let i = 0, l = collections.length; i < l; i++) {
collections[i].removeAll();
};
}
};
// start up
drawAllCircle(radius);
addLinesSelectors();
}