Всем здравствуйте.
Сделал на сайте карту с офисами. Но ни как не могу поменять метки по умолчанию.
Задание точек сделано через динамическое формирование xml файла по средству php скрипта.
<ymaps:ymaps xmlns:ymaps=\"http://maps.yandex.ru/ymaps/1.x\"
xmlns:repr=\"http://maps.yandex.ru/representation/1.x\"
xmlns:gml=\"http://www.opengis.net/gml\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://maps.yandex.ru/sch
<repr:Representation>
<repr:View>
<repr:mapType>".$this->la
</repr:View>
<repr:Style gml:id=\"MyStyle\">
<repr:iconStyle>
<repr:href>http://company.yandex.ru/i/ya.png</repr:href>
<repr:size x=\"57\" y=\"55\"/>
<repr:offset x=\"-37\" y=\"0\"/>
<repr:shadow>
<repr:href>http://company.yandex.ru/i/shadow.png</repr:href>
<repr:size x=\"57\" y=\"55\"/>
<repr:offset x=\"-37\" y=\"0\"/>
</repr:shadow>
</repr:iconStyle>
<repr:iconContentStyle>
<repr:template>#StyleForM
</repr:iconContentStyle>
<repr:hintContentStyle>
<repr:template>#StyleForH
</repr:hintContentStyle>
<repr:balloonContentStyle>
<repr:template>#StyleForB
</repr:balloonContentStyle>
</repr:Style>
<repr:Template gml:id=\"StyleForMarkTemplate\">
<repr:text><![CDATA[<div>
</repr:Template>
<repr:Template gml:id=\"StyleForHintTemplate\">
<repr:text><![CDATA[<div>
</repr:Template>
<repr:Template gml:id=\"StyleForBallounTemplate\">
<repr:text><![CDATA[
<div>
<h3><strong>$[name]</strong></h3>
<p><strong>Адрес: </strong>$[metaDataProper
<p><strong>Телефон: </strong>$[metaDataProper
</div>
]]>
</repr:text>
</repr:Template>
</repr:Representation>
<ymaps:GeoObjectCollection>
<ymaps:style>#MyStyle</ymaps:style>
<gml:name>Офисы ...</gml:name>
<gml:featureMembers>
<ymaps:GeoObject>
<gml:name>... офис № ".$val['off_num']."</gml:name>
<gml:description>".$val['off_address']."; Телефон: ".$val['off_phone']."</gml:description>
<gml:metaDataProperty>
<AnyMetaData>
<info>
<number>".$val['off_num']."</number>
<address>".$val['off_address']."</address>
<phone>".$val['off_phone']."</phone>
</info>
</AnyMetaData>
</gml:metaDataProperty>
<gml:Point>
<gml:pos>".$val['yandex_map_item_latitude']." ".$val['yandex_map_item_longitude']."</gml:pos>
</gml:Point>
</ymaps:GeoObject>";
</gml:featureMembers>
</ymaps:GeoObjectCollection>
</ymaps:ymaps>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 4.0 Transitional//EN">
<HTML>
<head>
<title>Контакты.</title>
<meta http-equiv="Content-Type" content="text/xml; Charset=Windows-1251" />
<link rel="alternate" href="http://.../rss/rss_hotspo.php" title="..." type="application/rss+xml" />
<link rel="alternate" href="http://.../rss/rss_lenta.php" title="... - Новости" type="application/rss+xml" />
<link rel="Stylesheet" href="http://.../style.css" type="text/css" />
<link rel="stylesheet" href="http://.../thickbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://.../script/jquery.js"></script>
<script type="text/javascript" src="http://.../script/jquery.pngFix.js"></script>
<script type="text/javascript" src="http://.../script/main.js"></script>
<script type="text/javascript" src="http://.../script/thickbox.js"></script>
...
<div style='text-align : center;'> <!-- Для ИЕ центрирование -->
<!-- Стили для раздела по работе с Яндекс.Карты -->
<link rel='stylesheet' type='text/css' media='all' href='/css_style/yandex_map.css' />
<div id='div_form_yandex_map'>
<!-- Блок с Яндекс.Картой (начало) -->
<script src='http://api-maps.yandex.ru
<script src='http://.../yandex_map/get_file.php?js=all' type='text/javascript'></script>
<p>Выберите населенный пунк для которого желаете увидеть офисы:</p>
<select id='region' name='region' onChange='change_region()'></select>
<div id='yandex_map' style='height:600px;width:800px;'></div>
<!-- Блок с Яндекс.Картой (конец) -->
</div>
</div>
var data;
var showitem;
var geoResult;
// Создание обработчика для события window.onLoad
YMaps.jQuery(window).load(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery('#yandex_map')[0]
YMaps.MapType.PMAP.getName = function () { return 'Народная'; };
map.setCenter(new YMaps.GeoPoint(".$this->l
map.addControl(new YMaps.TypeControl([
YMaps.MapType.MAP,
YMaps.MapType.SATELLITE,
YMaps.MapType.HYBRID,
YMaps.MapType.PMAP
], [0, 1, 2, 3])
// Ссылка на контейнер для меню
var menuContainer = YMaps.jQuery('#region');
data = [";
$sBody_text .= "'Не выбрано',";
// формируем список регионов
foreach ($this->regions_on_map as $val)
{
$sBody_text .= "
'".$val['off_region_name']."',";
}
// если нет регионов тогда из настроек берем по умолчанию либо подставляем россию
if (count($this->regions_on_map)==0)
if ($this->last_settings['ya
$sBody_text .= "'".$this->last_settings[
else
$sBody_text .= "'Россия',";
//
$sBody_text .= "];
// поиск координат городов
// запуск мульти геокодирования
var geocoder = new MultiplyGeocoder(data);
// Генерирование меню
for (var item in data) {
(function (number,desc) {
// Создаем элемент списка
YMaps.jQuery(\"<option value='number'>\" + desc + \"</option>\")
// Записываем элемент списка в список
.appendTo(menuContainer);
})(item,data[item])
}
// Создание и добавление YMapsML-документа на карту
var ml = new YMaps.YMapsML('.../yandex
map.addOverlay(ml);
// Обработчик неудачной загрузки YMapsML
YMaps.Events.observe(ml, ml.Events.Fault, function (ml, error) {
alert('Ошибка: ' + error);
}
}
// Реализует наследование прототипа без исполнения конструктора родителя
// Подробнее о наследовании: http://javascript.ru/tutorial/object/inheritance
function extend (child, parent) {
var c = function () {};
c.prototype = parent.prototype;
c.prototype.constructor = parent;
return child.prototype = new c;
};
// Множественный геокодер
// requests - массив адресов
function MultiplyGeocoder (requests)
{
// Вызов родительского конструктора
YMaps.GeoObjectCollection.call(this);
var _this = this,
// Количество вызовов геокодера
geocodeCallCount = 0,
// Обработчики событий
listeners = [];
// Последовательно геокодируем все переданные адреса
for (var i = 0, l = requests.length; i < l; i++) {
geocode(requests[i]
}
// Функция, отвечающая за геокодировании одного адреса
function geocode (request)
{
// Геокодируем
var geocoder = new YMaps.Geocoder(request);
// Счетчик вызовов геокодирования увеличиваем
geocodeCallCount++;
// Сохраняем ссылки на обработчики событий
listeners = listeners.concat(
// Обработка событий Load и Fault
YMaps.Events.observe(geocoder, [geocoder.Events.Load, geocoder.Events.Fault], function (geocoder) {
if (geocoder.length()) {
// добавляем полученные результат
_this.add(geocoder.get(0)
// добавляем в наш массив координаты
data[request]=geocoder.get(0).getGeoPoint(
}
geocodeCallCount--;
isFinish(
})
}
// Функция для проверки окончания процесса геокодирования
function isFinish ()
{
// Если все объекты сгеокодированы, то генерируем событие завершения
if (!geocodeCallCount) {
// Событие о завершении геокодирования
YMaps.Events.notify(_this, 'Load', _this);
// Удаление обработчиков событий
for (var i = 0, l = listeners.length; i < l; i++) {
listeners[i].cleanup(
}
}
}
}
var ptp = extend(MultiplyGeocoder, YMaps.GeoObjectCollection);
function change_region()
{
// Перемещаем карту
// меняем масштаб до уровня города
map.setZoom(9);
// перемещаем карту
map.panTo(data[data[region.selectedIndex]], {flying: 1}
}
Примечание:
... - пропущенный текст.