Активно использую яндекс карты для своего проекта. Но вот возникла такая задача: нужно разместить много объектов (меток, линий, многоугольников на карте) - сейчас уже 25000, а планируется более 100000. Для решения этой проблемы разработчиками предлагается механизм активных областей (не совсем удобный, но и на том спасибо: кстати, может уважаемые разработчики расширят возможности этого механизма, чтобы можно было использовать метки и линии, а не моделировать их с помощью многоугольников?). Но лучшим выходом для себя решил воспользоваться слоями активных областей, для работы которых необходимо получить набор тайлов, которые формируются приложением, разработанным сторонним разработчиком twirl (неплохо бы было, если бы уважаемые разработчики API сделали что-то подобное на JavaScript, а то для работы этого приложения пришлось осваивать Apache и PHP (в нашей конторе ранее эта связка никакого развития не имела, потратили неделю). И вот как бы все заработало, предлагаю броузеру Index.PHP, генерируется HTML страница, приведенная ниже, возникает сообщение с веб-страницы "Неправильный ключ" и более ничего не происходит. А хочется видеть обещанные тайлы.
Подскажите, пожалуйста, где искать решение, очень надо.
<!doctype html>
<html><head>
<title>Test</title>
<!-- Подключаем API -->
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=AHJBjk " type="text/javascript"></script>sBAAAAxW35aQMATpaR0cEdAoL yMNd1MwmoHxfCr8UAAAAAAAAA AAB0Ripz_KiouiTOADvM4qIS8 oJ3yA==&modules=hotspots
<!-- Подключаем файл со стилями -->
<script src="styles.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {
// Создаем и инициализируем карту
var map = new YMaps.Map(document.getElementById("YMapsID"));
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 0);
// Вспомогательная функция обработки шаблонов
function processTemplate (template, tile, zoom) {
return template.replace(/%x/ig, tile.getX()).replace(/%y/ig, tile.getY()).replace(/%z/ig, zoom);
}
// Источник тайлов с изображениями
var ds = new YMaps.TileDataSource('png/%z/tile-%x-%y.png', 1, 0);
ds.getTileUrl = function (tileNumber, zoom) {
return processTemplate(
YMaps.TileDataSource.prototype.getTileUrl.call(thi s, tileNumber, zoom),
tileNumber,
zoom
);
};
// Добавляем "картиночный" слой на карту
map.addLayer(new YMaps.Layer(ds));
// Источник тайлов с описаниями активных областей
var os = new YMaps.Hotspots.ObjectSource('js/%z/tile-%x-%y.js', 'myLayer-%x-%y-%z');
os.getTileUrl = function (tileNumber, zoom) {
return processTemplate(
YMaps.Hotspots.ObjectSource.prototype.getTileUrl.c all(this, tileNumber, zoom),
tileNumber,
zoom
);
};
os.getKey = function (tileNumber, zoom) {
return processTemplate(
YMaps.Hotspots.ObjectSource.prototype.getKey.call( this, tileNumber, zoom),
tileNumber,
zoom
);
};
// Добавляем слой активных областей на карту
var hLayer = new YMaps.Hotspots.Layer(os);
map.addLayer(hLayer);
map.enableScrollZoom();
}
</script>
</head><body>
<div id="YMapsID" style="height: 700px; width: 1200px;"></div>
<a href="../index.php">Back</a>
</body></html>