Javascript OpenLayers没有向我的地图添加标记

Javascript OpenLayers没有向我的地图添加标记,javascript,html,openlayers,Javascript,Html,Openlayers,我有一个OpenLayers映射,我使用JavaScript函数创建它。然后我有一个按钮,当按下该按钮时,调用另一个JavaScript函数,该函数有代码向地图添加标记 由于某些原因,没有添加标记 OpenLayers地图创建代码: function init() { var map, baseLayer; var options = {numZoomLevels: 5, isBaseLayer: true,}; map = new Op

我有一个OpenLayers映射,我使用JavaScript函数创建它。然后我有一个按钮,当按下该按钮时,调用另一个JavaScript函数,该函数有代码向地图添加标记

由于某些原因,没有添加标记

OpenLayers地图创建代码:

function init()
    {
        var map, baseLayer;
        var options = {numZoomLevels: 5, isBaseLayer: true,};

        map = new OpenLayers.Map('map');            
        baseLayer = new OpenLayers.Layer.Image("My map","map.png", 
        new OpenLayers.Bounds(-2000, -2000, 1000, 1000),
        new OpenLayers.Size(1500,1500), options);
        map.addLayer(baseLayer);
        var center = new OpenLayers.LonLat(-100,-100);
        map.setCenter(center ,0);  
        map.addControl(new OpenLayers.Control.LayerSwitcher());
        map.addControl(new OpenLayers.Control.MousePosition());
        var size = new OpenLayers.Size(21,25);
        var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
        var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset);
        var markers = new OpenLayers.Layer.Markers( "Marker" );
        map.addLayer(markers);
    }   
用于添加标记的代码:

function addMarker(x, y)
    {    
        markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(x, y),icon));
    }

非常感谢您的帮助:)

这对我来说很好:

var markers,icon;
function init(){
    var map, baseLayer;
    var options = {numZoomLevels: 5, isBaseLayer: true,};

    map = new OpenLayers.Map('map');            
    baseLayer = new OpenLayers.Layer.Image("My map","map.png", 
    new OpenLayers.Bounds(-2000, -2000, 1000, 1000),
    new OpenLayers.Size(1500,1500), options);
    map.addLayer(baseLayer);
    var center = new OpenLayers.LonLat(-100,-100);
    map.setCenter(center ,0);  
    map.addControl(new OpenLayers.Control.LayerSwitcher());
    map.addControl(new OpenLayers.Control.MousePosition());
    var size = new OpenLayers.Size(21,25);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    //instance the icon
    icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset);
    //instance the marker layer
    markers = new OpenLayers.Layer.Markers( "Marker" );
    map.addLayer(markers);
}

function addMarker(x, y){    
    markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(x, y),icon));
}

变量“markers”和“icon”在函数“addMarker”中可见?这是正确的。解释一下:图标和标记在init()中是局部变量,在addMarker中不可访问。在Maxi的代码中,这两个变量被移动到全局范围。