Клуб API Карт

Переключатель слоев карт - народная карта + не русский = пропадает элемент управления

zhukdl
28 октября 2013, 12:08

Всем привет.

Сейчас столкнулся с ошибкой. Воспроизводимой.

 

Загружаем АПИ

http://api-maps.yandex.ru/2.0/?coordorder=longlat&load=package.full&lang=en-gb

 map.controls.add(new ymaps.control.TypeSelector(
    [
        "yandex#map",
        "yandex#satellite",
        "yandex#hybrid",
        "yandex#publicMap",
        "yandex#publicMapHybrid"
    ]));

 

Ну и все, он пропадает.

Если народную карту не грузим - контролы на английском. Если грузим - контрола нет.

Если включаю русскую кодировку - все ОК в любом случае


Контрол не создается, есть ошибка 

[11:53:53.470] TypeError: u(...) is undefined @ http://api-maps.yandex.ru/2.0.33/release/combine.xml?modules=2-3p4(2:3Q3j3d3X!K@Q!L!z!E!H45426n@$3C!I6s6u6r8f5b!d!e8R8Q8U8~7H8n7`!28e8d439b7~8c4Y!V!Z!Y7,3f6q5c5n2,3F7p7t7s7m7q7r7j7o7n7k7l7L7G7I7J535052515{5)5(5]5[5*5!595^5@4B4C4F7S4G!l!g!f!h!k!i2.4h3[4*4j6L6K!*5,3s3M@U909Z919Y3N4d8*5R@S!D!~!:@b$s$r$t$H$p$n@-$o$y3K!R4I@W@R!N!B!F@4@M@L4-5f4.4{8x8w5a8C4=4)4,![5h!_!=!{5l4%604[4}5e5d4:!17-5y5A9a3k8%603c3P4L445J2~3U8i8g8h8l8k8j5z@d3o6T6U6Q6R2=3D5H6^6(4A4J3=3*3{3z6o4b3_3h373b3$6p3}3@!J9s6t9F6F6w9I6I6v9z9G6D6x3%605r5x4_4~3]9c7M7O3a5S5v8O8S5u8L4e5D5s5w8J5t6Z8N3l9d7E@C@E7K8q8b7=46334Z3x5V7w7C7{8r!U7]8m!T7_8p8a!X7}8o7:!W58555456573J3G3L!}6f5m5k9f9g6@9r9p9l9q9n9o6_6}4T7x7u7v7D!a!b!c@D9.@B9:7y7(7z9_9~7A9-389=7B3q5=3r5-5_5}3v9i9k5$7P3e8:7N4W3V3~3w3u7i7Q4E!j4l3:8}4y!!!7755:6J4a343y!O@X@Z@Y@1@2@V@T@J@I@K30!%60@a@c$J$K$Y$Z$6$8$!$V$U$T$S$($5$3$4$_${$X$]$9$[$A@=$w1S8V3t!S@0!M@}$k$l$m@_@{!C@H@39e8[8{3Z32314X3)3W3O2%606263898!888684838Z8D8B3(4]8z8y!]5g6Y98!,4z4g4s4O8I8^8@3i5T5P7T4v4f774K8(4140787$798Y3,5G3n6V926,976S3B3A$N$G$F$j$h$P$i@O@~@P@%60!G@N@.@,9y9M9E9U9W9Q9u9L9T9X9v6z6y6B9J6E9V3!6*6O6P8T8K8W5C8P5U5L5N5M5Q9h8,8_8)3g8]6{6=@m7F5O9j4Q4M4N3I3E3^3H@p@t@n@q@o@r6i609,9%607U7*7f36677Z9m7R4V4H96!P5I5q$z$v9]9[231^0*1B2y011H0Q5E$)2U2[1Y$x0K2P2A2i271i@(@G4p$e$E@@@7$b$a@8@5$f@!@9@67[!s@i3Y684R4S5o3R80815B8A9*9!934r7b7h8H5F4o6[4m7.7@7^7!3.942S1J2n0d0)0o1*1t0G1X1.2X9O@A@w6A9B@v@s@u6H6G9t9w9x9C9)6~8M3m5K@e8-6-4t6)769$996:4q66658.4D4x!Q$L$1$79{2t0x2e2d0l0k2j2u2w2D29050N0X0b0m$}162x0U2M0~1}0T1e0Z4n$d$g0y2c1w2V22251d@:0$0R1A!84U!$8u8s695j!.5i8=7d5Z1E2K$O0Y21@x@z9N9S6C9R9D9K4u!p4P721(2r2f0O1Q$@$^$*$$$R0^0E1R0t1z2v0c1K2^061n2L0.0V2*1b1q1g0I0q0i1h0g1!2}02$C$c0e0]3-4c47!5!34i648E0j0}2$0w9P@y@j73!n7V2z2W2h0@2g1F1O2T262m2Z0!1V172b!(484@!)4^8F711r0-2]1{0B2I2J0S1[0p1%601N6$4k!-7W9^957X&jsonp_prefix=ymaps2_0_33:1

 

6 комментариев
Подписаться на комментарии к посту

Народная карта доступна только для России и Украины, поэтому в локали en-GB тайп селектор пытается подключить несуществующий объект и падает.

Ну...

Во-первых, центр карты находится в России.

А во-вторых, я так понимаю, дело не в России или нет, а в том, что не создается какой-либо внетренний объект для локали, отличной от ru-RU при подключении слоев Народноый карты

Да, именно так и есть. Не создается объект народной карты. Когда вы указываете ключ yandex#publicMap, контрол пытается найти объект и не находит.

Центр карты не важен - важна локаль.

Ну, тогда, наверное, это дело АПИ - нет объекта - не геренировать ошибку. Может проще создавать как есть, просто игнорировать тогда попытку некорректного вызова.

Хотя это спорный вопрос про некорректность.

Например, если создаем переключатель по дефолту, то на русском - все слои, вместе с народной. Если на английском - то без народной. Здесь же вы обрабатываете "некорректность"

Случай, когда вы явно указываете ключ народной карты в локали, где этой карты нет, мы считаем аналогичным случаю, когда вы просто указываете некорректный ключ (abra#kadabra).

При таком варианте корректнее явно указать разработчику, что он написал неверный код, чем маскировать ошибку.

Если бы в список просто молча не добавилась народная карта, мы бы разбирались в чем дело намного дольше.

Ну, все таки красивее отличать собственные слои от других.

На мой взгляд, некорректное сочетание чего-то родного в пределах своего-же не должно приводить к генерации ошибок  :)
Да и ладно, понятно. Спасибо за ответы ;)