Клуб API Карт

создать карту

Пост в архиве.

 

Здравствуйте! помогите пож-ста.

такая задача:

 есть массив городов России  и соответственно их координат [город1, широта, долгота],  [город2, широта, долгота] и т.д.,   нужно разместить эти города на карте, и подобрать масштаб и размер  так, чтобы всё хорошо было видно на карте.

что я делаю не так

var myMap = new ymaps.Map("map", {center: [44.005986,56.326887],zoom: 2});
for(i=0;i<citys.length;i++){
  myGeoObject = new ymaps.GeoObject({geometry: {type: "Point",coordinates: [citys[i][1], citys[i][2]]}, properties: {iconContent: citys[i][0], hintContent: citys[i][0]}/**/});
myMap.geoObjects.add(myGeoObject);
}
 myMap.setBounds(myMap.geoObjects.getBounds());

получается чёрт знает что. 

 

27 комментариев
Всеволод Шмыров
27 января 2016, 23:50
Доброе утро! А что не работает? В косоль падает какая-то ошибка?

слушайте, добавил параметр coordorder=longlat, стало нечто похожее на правду. мне сразу говорили поменять порядок, но я не поверил в это, потому что непонятно, откуда он м.б. обратным. теперь всё на своих местах, но названия наезжают на метки, где-то вообще не разберешь, где метка, где название. как подобрать оптимальный размер и масштаб?

Всеволод Шмыров
27 января 2016, 23:50
Очень сложно подсказывать без примера. Сейчас вы устанавливаете видимую область, в которой помещаются все метки карты. Кака вы хотите решить задачу? Если метки указаны на определенные объекты, то они естественно могут друг друга перекрывать. Чтобы этого избежать нужно программно сдвигать метки или придумать какое-нибудь другое решение. К примеру, отображать названия меток в хинте или балуне

а как их сдвинуть (например вверх на каую-то величину) программно? а можно вместо меток отображать точки?

Всеволод Шмыров
27 января 2016, 23:50
Геообъектам можно задать смещенные координаты, можно задать смещение в пикселях самой метке, а потом и использовать круглый макет
http://api.yandex.ru/maps/jsbox/2.1/placemark
или создать полностью собственный макет метки.

а если я создам собственный макет метки, где его можно сохранить?

Всеволод Шмыров
27 января 2016, 23:50
Не понял, что вы имеете в виду. Где сохранить html файл?

В песочнице написано, что сослаться на собственное изображение метки можно следующим образом:

iconImageHref:'examples/maps/ru/icon_customImage/images/myIcon.gif''

а где мне сохранить у вас своё изображение метки, чтобы на него можно было подобным образом сослаться?

Всеволод Шмыров
27 января 2016, 23:50
На любом сервере. К примеру, там где располагается сама страница с картой.

создал я собственное изображение для метки, но ничего не изменилось

myGeoObject = new ymaps.GeoObject({geometry: {type: "Point",coordinates: [citys[i][1], citys[i][2]]}, properties: {iconContent: citys[i][0], hintContent: citys[i][0]}});

myPlacemark = new ymaps.Placemark(myMap.getCenter(), {}, {iconLayout: 'default#image',iconImageHref: 'http://127.0.0.1/forMap_icon.gif', iconImageSize: [1,1], iconImageOffset:[0,0]});

myMap.geoObjects.add(myGeoObject);

myMap.geoObjects.add(myPlacemark); 

Всеволод Шмыров
27 января 2016, 23:50
Доброе утро!
"Ничего не изменилось" по сравнению с чем? Метка вообще не отображается? Отображается стандартный макет метки? Выпадает ошибка в консоль?

отображается стандартный макет метки

Всеволод Шмыров
27 января 2016, 23:50
Странно. В вашем коде создается два геообъекта один со стандартным макетом, а второй с изображением размером 1 на 1 пиксель (опция iconImageSize).
Всеволод Шмыров
27 января 2016, 23:50
Погодите. Вы создаете по два геообъекта на каждую запись citys[i] ? Зачем?
Поставьте опции iconLayout, iconImageHref и iconImageSize самому геообъекту. Только размер метки нужно подставить верный

myGeoObject = new ymaps.GeoObject(
{
geometry: {
type: "Point",
coordinates: [citys[i][1], citys[i][2]]
},
properties: {
iconContent: citys[i][0],
hintContent: citys[i][0],
iconLayout: 'default#image',
iconImageHref: 'http://127.0.0.1/forMap_icon.gif',
iconImageSize: [1,1],
iconImageOffset:[0,0]
}});

всё то же самое. отображается стандпртный макет метки

 

 

 

 

Всеволод Шмыров
27 января 2016, 23:50
iconLayout, iconImageHref, iconImageSize, iconImageOffset - это опции геообъекта, а не свойства.
myGeoObject = new ymaps.GeoObject({
    geometry: {
        type: "Point",
        coordinates: [citys[i][1], citys[i][2]]
    },
    properties: {
        iconContent: citys[i][0],
        hintContent: citys[i][0]
    }
},  {
        iconLayout: 'default#image',
        iconImageHref: 'http://127.0.0.1/forMap_icon.gif',
        iconImageSize: [1,1],
        iconImageOffset:[0,0]
});
Посмотрите примеры из документации http://api.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference/GeoObject.xml#param-options

так не отображаются ни метки, ни города.

Всеволод Шмыров
27 января 2016, 23:50
Должно работать. Есть как-нибудь ошибка в консоли? Размеры изображения и ссылка правильные?

вру. метки отображаются.

но названия городов - нет

ошибок никаких нет.

Всеволод Шмыров
27 января 2016, 23:50
Тогда вам нужно использовать другой макет. Не просто "default#image", а "default#imageWithContent".

спасибо вам пребольшое. а можно сделать так, чтобы были отмечены и подписаны только те города, какие есть в моём списке?

Всеволод Шмыров
27 января 2016, 23:50
В смысле на самой карте? Не метках? Нет. Только если использовать какой-нибудь собственный слой, но это слишком сложная задача.

дело в том, что какие-то города оказываются подписанными дважды.

а можно узнать формат (шрифт, размер), которым подписаны города не по моим меткам, чтобы хотя бы не подписывать их еще раз, а остальные чтобы были подписаны тем же шрифтом.

 

п.с. а почему не все уведомления об ответах приходят ко мне на почту?  это как-нибудь настраивается?

Всеволод Шмыров
27 января 2016, 23:50
дело в том, что какие-то города оказываются подписанными дважды.
Можете предоставить скриншот, а то мне кажется, что мы о разных вещах говорим.
Вы говорите об этих надписях?
https://yadi.sk/i/xdzmdK_5bQUKp

Уведомления вроде всегда должны приходить

https://yadi.sk/i/FEPfreTIbQixp

 

у тех городов, которые подписаны дважды, одно из названий - моё.

Всеволод Шмыров
27 января 2016, 23:50
Названия карты никак нельзя убрать.

а можно своим надписям задать другое оформление? чтобы оно совпадало с тем, какое  у изначально расположенных на карте городов?