Клуб API Карт

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

river-school
20 августа 2014, 10:06

 

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

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

 есть массив городов России  и соответственно их координат [город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 комментариев
Всеволод Шмыров
20 августа 2014, 10:58
Доброе утро! А что не работает? В косоль падает какая-то ошибка?

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

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

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

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

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

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

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

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

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

Всеволод Шмыров
24 августа 2014, 00:13
На любом сервере. К примеру, там где располагается сама страница с картой.

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

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); 

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

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

Всеволод Шмыров
25 августа 2014, 11:11
Странно. В вашем коде создается два геообъекта один со стандартным макетом, а второй с изображением размером 1 на 1 пиксель (опция iconImageSize).
Всеволод Шмыров
25 августа 2014, 11:16
Погодите. Вы создаете по два геообъекта на каждую запись 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]
}});

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

 

 

 

 

Всеволод Шмыров
25 августа 2014, 12:48
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

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

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

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

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

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

Всеволод Шмыров
9 сентября 2014, 10:13
Тогда вам нужно использовать другой макет. Не просто "default#image", а "default#imageWithContent".

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

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

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

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

 

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

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

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

https://yadi.sk/i/FEPfreTIbQixp

 

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

Всеволод Шмыров
11 сентября 2014, 12:06
Названия карты никак нельзя убрать.

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