Вопрос по яндекс-карта (карта города)

R
На сайте с 07.08.2011
Offline
65
745

Пробую на DLE

Есть скрипт яндекс-карта объекта, которая почему то отображается корректно только в полной новости.

Если ее засунуть в shortstory (короткая новость), то карта не отображается или отображается только в первой новости, а у остальных ниже новостей пустой квадрат вместо карты. Может она не работает в короткой новости, потому что на одной странице повторяется многократно какой то код?

Сам скрипт (где [xfvalue_city] и т.п. - это город, улица, дом)

<script type="text/javascript">

//Функции оброботки ошибки загрузки API
var flagApiFault = 0;
function apifault(err){
flagApiFault = 1;
alert('Ошибка: ' + err);
}
</script>
<!-- Загрузка апи стандартным способом -->
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=ANmwJlQBAAAA0eVNCAIAevFzNiUnJcpMg3tkDH817VQLNbMAAAAAAAAAAACwRbdVe8GzCP2f824WQjMz8beJfw==&onerror=apifault" type="text/javascript"></script>

<script type="text/javascript">
//Адрес геокодирования
var YMadres = '[xfgiven_city] [xfvalue_city] [/xfgiven_city], [xfgiven_street] [xfvalue_street] [/xfgiven_street] [xfgiven_number] [xfvalue_number] [/xfgiven_number]';
window.onload = function(){
//YMAPILoad();
CreateObjectYM();
}
//Загрузка API
function YMAPILoad(){
setTimeout(
function(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'http://api-maps.yandex.ru/1.1/index.xml?key=ANmwJlQBAAAA0eVNCAIAevFzNiUnJcpMg3tkDH817VQLNbMAAAAAAAAAAACwRbdVe8GzCP2f824WQjMz8beJfw==&onerror=apifault';
document.body.appendChild(s);
},
2000
);
}
//Создание карты
function CreateObjectYM(){
//если не было ошибок загрузки и базовый класс YMaps существует.
if(flagApiFault == 0 && typeof(YMaps) != 'undefined'){
(YMadres);
//Куда выводить
var map = new YMaps.Map(document.getElementById('YMapsID'));
//Геокодер получение координат из строки адреса (ну тут не важно просто у меня уже так написано, лень более простой вызов карты писать)
var geocoder = new YMaps.Geocoder(YMadres, {results : 1, boundedBy : map.getBounds()});
//Геокодирование прошло удачно (так в апи обрабатываются события, в частности событие геокодера)
YMaps.Events.observe(geocoder, geocoder.Events.Load, function (){
if(geocoder.length()>0){
var geoResult = geocoder.get(0); // Первый ответ
var placemark = new YMaps.Placemark(geoResult.getGeoPoint(), {style : 'default#houseIcon'});
map.addOverlay(placemark); // Добавить точку на карту
placemark.description = "<img src='[xfgiven_image1] [xfvalue_image1] [/xfgiven_image1]' width='250' height='170' /></br>[xfgiven_city] [xfvalue_city] [/xfgiven_city], ул.[xfgiven_street] [xfvalue_street] [/xfgiven_street],[xfgiven_number] [xfvalue_number] [/xfgiven_number]</br>Цена: [xfgiven_cena] [xfvalue_cena] [/xfgiven_cena] руб</br>Телефон:[xfgiven_telefon] [xfvalue_telefon] [/xfgiven_telefon]";
map.setBounds(geoResult.getBounds()); // Область показа, собствено без этой штуки так и будет серый экран
}
else{
alert('Извините, объект не был найден на карте.');
}
});
//Геокодирование прошло неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function(geocoder, err){
alert('Извините, произошла ошибка геокодирования.');
});
}
else{
alert('API еще не загружен');
setTimeout("CreateObjectYM()", 1000);
}
}
</script>

<div id="YMapsID" style="width:601px;height:270px"></div>
tommy-gung
На сайте с 22.11.2006
Offline
303
#1

для каждой карты делайте уникальный id, который YMapsID

Здесь не могла быть ваша реклама
R
На сайте с 07.08.2011
Offline
65
#2
tommy-gung:
для каждой карты делайте уникальный id, который YMapsID

Не получается так. Пробовал вроде и раньше...Пустой квадрат на месте карты. Если прописать {news-id}, то карта отображается уже не в первой новости, а в последней...

<div id="{news-id}" style="width:601px;height:270px"></div>

и так прописывал одновременно

//Куда выводить
var map = new YMaps.Map(document.getElementById('{news-id}'));

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий