Клуб API Карт

Вторая карта в балуне многоугольника(в xml)!

arinokaz
23 мая 2010, 14:40

Здравствуйте! на сайте webmap-blog.ru по этой ссылке: http://webmap-blog.ru/?p=96 я увидел что можно вторую карту всунуть в метку вот код той страницы :

 

 
        <script type="text/javascript" charset="utf-8">
        var map;
        function init () {

       map = new YMaps.Map( document.getElementById("YMapsID") );
       map.setCenter(new YMaps.GeoPoint(43.979459,56.291908), 15,
                  YMaps.MapType.MAP);
                     
            map.addControl(new YMaps.TypeControl());
            map.addControl(new YMaps.ToolBar());
            map.addControl(new YMaps.Zoom());
            map.addControl(new YMaps.ScaleLine());

            var point = new YMaps.GeoPoint(43.979459,56.291908);
            var placemark = new YMaps.Placemark(point);
            placemark.setBalloonContent('<div style="text-align:center"><strong>Дворец спорта</strong><br><div id="YMapsID2" style="height:200px; width:300px;"></div><br>проспект Гагарина, д. 29</div>');
            map.addOverlay(placemark);
            placemark.openBalloon();


            var map2 = new YMaps.Map( document.getElementById("YMapsID2") );
        map2.setCenter(new YMaps.GeoPoint(43.979288,56.291384), 16,
                  YMaps.MapType.SATELLITE);

            map2.addControl(new YMaps.SmallZoom());
           
        }
        </script>
 

Но у меня  не получаеться, я делаю его в коде моей страницы и как говориться пустота, метка пуста. Вот моя страница:

 

     <script type="text/javascript">
        window.onload = function () {
            var options = {
                    tileUrlTemplate: "./%z/tile-%x-%y.png",
                    controls: {
                        typeControl: true,
                        miniMap: true,
                        toolBar: true,
                        scaleLine: true
                    },
                    scrollZoomEnabled: true,
                    mapCenter: new YMaps.GeoPoint(32.100975970125, 46.3998619845388),
                    backgroundMapType: YMaps.MapType.MAP,
                    mapZoom: 13,
                    isTransparent: true,
                    smoothZooming: false,
                    layerKey: "my#layer",
                    mapType: {
                        name: "Лесничество",
                        textColor: "#000000"
                    },
                    copyright: "Яловенко В.С. и Стельмах В.А."
                },
                map = new YMaps.Map(document.getElementById("YMapsID")),
                myData = new YMaps.TileDataSource(options.tileUrlTemplate, options.isTransparent, options.smoothZooming);
     
        
            var ml = new YMaps.YMapsML("ftp://w_arinokaz-cc-ua_6b5ea8a7:95a973e5@arinokaz.cc.ua/http/bd.xml");


            YMaps.Events.observe(ml, ml.Events.Load, function (ml) {

                ml.get(0).forEach(function (item) {
                    addMenuItem(item, map, YMaps.jQuery("#menu"));
                });
            });


            YMaps.Events.observe(ml, ml.Events.Fault, function (ml, error) {
                alert("Error: " + error);
            });

        function addMenuItem (group, map, menuContainer) {

            YMaps.jQuery("<a class=\"title\" href=\"#\">" + group.name + "</a>")
                .bind("click", function () {
                    var link = YMaps.jQuery(this);


                    if (link.hasClass("active")) {
                        map.removeOverlay(group);
                    } else {
                        map.addOverlay(group);
                    }

                    link.toggleClass("active");

                    return false;
                })


                .appendTo(
                    YMaps.jQuery("<li></li>").appendTo(menuContainer)
                )
        };

     var point = new YMaps.GeoPoint(32.065959,46.411973);
            var placemark = new YMaps.Placemark(point);
            placemark.setBalloonContent('<div style="text-align:center"><strong>Дворец спорта</strong><br><div id="YMapsID2" style="height:200px; width:300px;"></div><br>проспект Гагарина, д. 29</div>');
            map.addOverlay(placemark);
            placemark.openBalloon();

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

            map.setCenter(options.mapCenter, options.mapZoom, myMapType);
            if (options.copyright) {
                map.addCopyright(options.copyright);
            }

            if (options.controls.typeControl) {
                map.addControl(new YMaps.TypeControl([ myMapType, YMaps.MapType.SATELLITE]));
            }
         
            if (options.controls.miniMap) {
                map.addControl(new YMaps.MiniMap());
            }
            if (options.controls.toolBar) {
                map.addControl(new YMaps.ToolBar());
            }
            if (options.controls.scaleLine) {
                map.addControl(new YMaps.ScaleLine());
            }
            if (options.scrollZoomEnabled) {
                map.enableScrollZoom();
            }
            map.addControl(new YMaps.Zoom());
        
                var map2 = new YMaps.Map( document.getElementById("YMapsID2") );
        map2.setCenter(new YMaps.GeoPoint(32.100975970125, 46.3998619845388), 13, YMaps.MapType.SATELLITE);

            map2.addControl(new YMaps.SmallZoom());

        
        }
        

        
    </script>

 вот сама моя страница : http://arinokaz.cc.ua/ - вот в синей метки должна была появиться вторая карта, но она не появляеться!

А вот мой xml (мини версия, а вот ссылка на фул: http://upload.com.ua/get/901655695/ ) файл:

 

 <?xml version="1.0" encoding="utf-8"?>
<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd">      
    <Representation xmlns="http://maps.yandex.ru/representation/1.x">
        
        <Style gml:id="styleboloto">
            <iconStyle>
                <href>http://image2blog.com/images/2010/05/17/d29e9380f12fa584d025043ef3bcb772.gif</href>
                <size x="10" y="10"></size>
                <offset x="-5" y="-5"></offset>
            </iconStyle>
        </Style>

    </Representation>


<GeoObjectCollection>
  <gml:featureMembers>

             // Болота

      <GeoObjectCollection>
        <style>#styleboloto</style>
          <gml:name>Болота</gml:name>
          <gml:featureMembers>
            <GeoObject>
                <gml:name>Болото</gml:name>
                <gml:description>Информация: 1804</gml:description>
                <gml:Point>
                <gml:pos>32.065959 46.411973</gml:pos>
               </gml:Point>
            </GeoObject>

            <GeoObject>
                <gml:name>Болото</gml:name>
                <gml:description>Информация: 1910</gml:description>
                <gml:Point>
                <gml:pos>32.085786 46.407949</gml:pos>
               </gml:Point>
             </GeoObject>

            <GeoObject>
                <gml:name>Болото</gml:name>
                <gml:description>Информация: 1:2113   2:2124</gml:description>
                <gml:Point>
                <gml:pos>32.102995 46.409665</gml:pos>
               </gml:Point>
            </GeoObject>

         </gml:featureMembers>
      </GeoObjectCollection>

     
       // Разметка кварталов
       
       <GeoObjectCollection>
          <style>#kvartal</style>
          <gml:name>Разметка кварталов</gml:name>
          <gml:featureMembers>

             <GeoObject>
                <gml:name>Квартал 18</gml:name>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>32.062554 46.401367 32.061954 46.412079 32.075086 46.412316 32.075171 46.397461 32.067275 46.401071</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </GeoObject>
            
            <GeoObject>
                <gml:name>Квартал 19</gml:name>
                <gml:description>
                <p align="center"><strong>Обьекты:</strong></p>
                <p>-------------------</p>
                <p><em>Озеро</em></p>
                <p>Данные: 1911</p>
                <p>-------------------</p>                
                <p><em>Болото</em></p>
                <p>Данные: 1910</p>
                <p>-------------------</p>            
                <p><em>Акация</em></p>
                <p>Данные: 1)1916 2)1913 3)1914</p>
                <p>-------------------</p>
                <p><em>Биополяна</em></p>
                <p>Данные: 1)1909 2)1908</p>
                <p>-------------------</p>
                <p><em>Лесовые культуры</em></p>
                <p>Данные: 1)1901 2)1902 3)1912 4)1918</p>
                <p>-------------------</p>
                </gml:description>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>32.075257 46.403439 32.075257 46.412375 32.08796 46.412434 32.088218 46.403498</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </GeoObject>        
          
            
         </gml:featureMembers>
      </GeoObjectCollection>       

  </gml:featureMembers>
</GeoObjectCollection>
</ymaps>

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

<gml:description>
<div id="YMapsID2" style="height:200px; width:300px;"></div>
</gml:description>

 и с помощью шаблона, не получаеться, выводит балун с размерами которые были заданы под карту, но самой карты нет, вообщем как сейчас на моей карте в метке!!! И еще как можно зделать чтоб мини карта была в виде спутника, а не схемы?!

3 комментария
Подписаться на комментарии к посту
Вот пример как сделать карту в метке:
YMaps.jQuery(function () {
    var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
    map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
   
    var placemark = new YMaps.Placemark(map.getCenter());
    placemark.setBalloonContent('');
    map.addOverlay(placemark);
   
    YMaps.Events.observe(placemark, placemark.Events.BalloonOpen, function () {
        if (!map2) {
            var map2 = new YMaps.Map(YMaps.jQuery("#YMapsID2")[0]);
        }

        map2.setBounds(map.getBounds());
    });
})
Спасибо за пример, получилось! только метка показывает тип карты не
спутник и схему и когда я его вставляю в код не выводиться мой слой
карты и не работает меню для группы обьектов, не подскажеш куда надо
правильно вставить его?! И возможно ли вставить в балун мой тип карты?!
   
Если вы хотите, чтобы обе карты были одинаковыми, то для второй карты проделайте все действия, что используете при создании первой (добавьте свой тип карты, привяжите к меню и пр.)