Клуб API Карт

Пользовательские карты

mikeles87
24 января 2011, 00:31
Нашел на просторах интернета функцию поиска, но до конца не могу отладить под себя:(
Проблема в объекте MAP. Если использовать пользовательские тайлы, то ничего не работает(если MAP не закамментить)
Собственно пользовательские тайлы:
var map;
  YMaps.jQuery(function () { 
            var options = {
                    tileUrlTemplate: "./pics/tiles/./%z/tile-%x-%y.jpg",
                    controls: {
                        typeControl: false,
                        miniMap: false,
                        toolBar: true,
                        scaleLine: true
                    },
                    scrollZoomEnabled: true,
                    mapCenter: new YMaps.GeoPoint(35.351734,52.339198),
                    backgroundMapType: YMaps.MapType.NONE,
                    mapZoom: 14,
                    isTransparent: true,
                    smoothZooming: false,
                    layerKey: "my#layer",
                    mapType: {
                        name: "Iie neie",
                        textColor: "#000000"
                    },
                    copyright: ""
                },
                map = new YMaps.Map(document.getElementById("YMapsID")),
                myData = new YMaps.TileDataSource(options.tileUrlTemplate, options.isTransparent, options.smoothZooming);

            myData.getTileUrl = function (tile, zoom) {
                return this.getTileUrlTemplate().replace(/%x/i, tile.x).replace(/%y/i, tile.y).replace(/%z/i, zoom);
            }

            var MyLayer = function () {
                return new YMaps.Layer(myData);
            }
            YMaps.Layers.add(options.layerKey, MyLayer);

            var mapLayers = options.backgroundMapType ? options.backgroundMapType.getLayers() : [],
                myMapType = new YMaps.MapType(YMaps.jQuery.merge(mapLayers, [ options.layerKey ]), options.mapType.name, { textColor: options.mapType.textColor, minZoom:14, maxZoom:17 });

            map.setCenter(options.mapCenter, options.mapZoom, myMapType);   
            map.addControl(new YMaps.ToolBar());
map.addControl(new YMaps.Zoom());
  });
Функция обработчик JSON запроса :
//Функция поиска
function do_search(company){

YMaps.jQuery("#results_search").html("");
map.removeAllOverlays();
 

$.ajax({
  url: "pages/components/search.php",
  type: 'post',
  dataType: 'json',
  data: ({object_name:company}),
  success: function(json)
  {
  var src_res="";
     if(json.status == "OK") {
 
  src_res="<p><strong>результаты поиска: </strong></p>";
src_res=src_res+'<p><strong>Найдено объектов: '+json.markers.length+'</strong></p>';
for (i = 0; i <= json.markers.length; i++) 

{
  var placemark = new YMaps.Placemark(new YMaps.GeoPoint(json.markers[i].lat, json.markers[i].lon));
 placemark.description='<div style="color:#ff0303;font-weight:bold">'+json.markers[i].cname+'</div>';
 placemark.description=placemark.description+'<strong>Адрес:</strong> '+json.markers[i].address+'<br><strong>Телефон:</strong> '+json.markers[i].phone;
  map.addOverlay(placemark);

src_res=src_res+'<p><a href="#" onClick="return go_to('+json.markers[i].lat+','+json.markers[i].lon+",'"+json.markers[i].cname+"','"+json.markers[i].address+"','"+json.markers[i].phone+"','"+json.markers[i].id+"');"+'\">'+json.markers[i].cname+'</a><br>'+json.markers[i].address+'</p>';
 
YMaps.jQuery('#results_search').html(src_res);
      }
}
else
{
src_res = '<p><strong>результаты поиска</strong></p><font color="red">По Вашему запросу объектов на карте не найдено</font>';
  
 }
});
}
Если же использовать обычную карту, то все работает. Помогите разобраться
1 комментарий
Подписаться на комментарии к посту
Решение нашел...
Создаем отдельно, не в контейнере OPTIONS,  экземляр карты

 map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

В контейнере его удаляем.