OpenLayers всплывающее окно не переключается - PullRequest
1 голос
/ 04 октября 2011

Когда я создаю статический маркер и прикрепляю статическое всплывающее окно, кажется, что все работает нормально.Я пытаюсь создать динамические маркеры, и хотя маркеры и всплывающие окна создаются правильно, они больше не переключаются из-за событий.

Я сократил код до уровня, достаточного для того, чтобы поднять карту и нарисовать один построенный дуэт маркеров / всплывающих окон.Может быть, вы видите что-то, чего мне не хватает?

<html>
<head>
    <style type="text/css">html,body,#basicMap{width:69%;height:60%;}</style>
    <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
    <script>

        /**/var oldProjection=new OpenLayers.Projection("EPSG:4326");//Used to scale the GPS coordinates
        /**/var newProjection=new OpenLayers.Projection("EPSG:900913");//To the map
        /**/var marks=new OpenLayers.Layer.Markers("Debug Site");
        /**/var mapnik=new OpenLayers.Layer.OSM("World Map");//Layer containing the map tiles
        /**/var size=new OpenLayers.Size(21,25);//Icon height and width
        /**/var offset=new OpenLayers.Pixel(-(size.w/2),-size.h);//Icon offset
        /**/var mapCenter=new OpenLayers.LonLat(-125.2,54.8).transform(oldProjection,newProjection);

        function init() 
        {        
            var map=new OpenLayers.Map($("BasicMap"),{controls:[]});
            map.addLayer(mapnik);
            map.setCenter(mapCenter,3);
            map.addLayer(marks);
            var TestSite=new site(-131,57.2,"TestSite","DE","Hello World");
            map.addPopup(TestSite.popup);
        }
        function site(lon,lat,siteID,layer,content)
        {
            this.content=content;
            this.layer=layer;
            this.lon=lon;this.lat=lat;this.siteID=siteID;
            this.lonlat=new OpenLayers.LonLat(lon,lat).transform(oldProjection,newProjection);
            this.popup=new OpenLayers.Popup.Anchored(this.siteID,this.lonlat,new OpenLayers.Size(150,375),this.content);
            this.marker=new OpenLayers.Marker(this.lonlat);
            this.popup.border='1px solid black';this.popup.autoSize=true;
            this.marker.events.register("click",this.marker,function(e){this.popup.toggle()});
            marks.addMarker(this.marker);   
        }
    </script>
</head>
<body onload="init();"><div id="basicMap"></div></body>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...