Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打开的图层无法读取未定义的属性“添加图层”_Javascript_Html_Ajax_Google Maps_Openlayers - Fatal编程技术网

Javascript 打开的图层无法读取未定义的属性“添加图层”

Javascript 打开的图层无法读取未定义的属性“添加图层”,javascript,html,ajax,google-maps,openlayers,Javascript,Html,Ajax,Google Maps,Openlayers,我试图在单击后向地图添加一个新标记,并试图保存标题和说明以显示在标记悬停上,但我遇到以下错误: Cannot read property 'add Layer' of undefined Javascript: <script type="text/javascript"> var map; function init() { var map = new OpenLayers.Map('map'); var proj4326 = ne

我试图在单击后向地图添加一个新标记,并试图保存标题和说明以显示在标记悬停上,但我遇到以下错误:

Cannot read property 'add Layer' of undefined
Javascript:

<script type="text/javascript">
    var map;
    function init() {
        var map = new OpenLayers.Map('map');
        var proj4326 = new OpenLayers.Projection("EPSG:4326");
        var projmerc = new OpenLayers.Projection("EPSG:900913");
        var layerOSM = new OpenLayers.Layer.OSM("Street Map");
        map.addLayers([layerOSM]);
        if (!map.getCenter()) map.zoomToMaxExtent();
        map.events.register("mousemove", map, function (e) {
            var position = this.events.getMousePosition(e);
            OpenLayers.Util.getElement("coords").innerHTML = 'MOUSE POSITION ' + position;
            var lonlat = map.getLonLatFromPixel(this.events.getMousePosition(e));
            //OpenLayers.Util.getElement("lonlatTG").innerHTML = 'lonlat => ' + lonlat;
            var lonlatTransf = lonlat.transform(map.getProjectionObject(), proj4326);
            //OpenLayers.Util.getElement("lonlatTrans").innerHTML = 'lonlatTransf => ' + lonlatTransf;
            //OpenLayers.Util.getElement("lonlatDouble").innerHTML = 'lonlat => ' + lonlat;
            document.getElementById("lon").innerHTML = "Longitude: " + lonlatTransf.lon;
            document.getElementById("lat").innerHTML = "Latidue : " + lonlatTransf.lat;
        });

        map.events.register("click", map, function (e) {


            var iconT = "http://maps.google.com/mapfiles/ms/icons/red-pushpin.png"; //document.getElementsByName("Icon").value;
            var title = document.getElementById("Title").value;
            var description = document.getElementById("Description").value;
            var position = this.events.getMousePosition(e);
            var icon = new OpenLayers.Icon(iconT);
            var lonlat = map.getLonLatFromPixel(position);
            var lonlatTransf = lonlat.transform(map.getProjectionObject(), proj4326);
            var longitude = lonlatTransf.lon;
            var latitude = lonlatTransf.lat;

            var lonlat = lonlatTransf.transform(proj4326, map.getProjectionObject());
            /*var markerslayer = new OpenLayers.Layer.Markers("Markers");*/


            $.ajax({
                type: 'POST',
                data: { 'desc': description, 'title': title, 'icon': iconT, 'lon': longitude, 'lat': latitude },
                url: '@Url.Action("Test")',
                success: function () {
                    alert('Your Marker was saved successfully!');
                    addMarker(title, description, longitude, latitude);
                    /* markerslayer.addMarker(new OpenLayers.Marker(lonlat, icon));
                    map.addLayer(markerslayer);*/
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert(thrownError.toString());
                }
            });

        });
        /*map.addControl(new OpenLayers.Control.LayerSwitcher());*/
    }

    function addMarker(title,description,lon,lat){
        var markerslayer = new OpenLayers.Layer.Markers("Markers");
        map.addLayer(markerLayer);

        lonLat = new OpenLayers.LonLat(lon,lat);
        marker = new OpenLayers.Marker(lonLat);
        markerLayer.addMarker(marker);
        marker.icon.imageDiv.title = title; //is this correct way to add title? How can I description too?
    }
</script>

map变量是init函数的局部变量:

<script type="text/javascript">
var map;
function init() {
    var map = new OpenLayers.Map('map');

是的,你是对的,我完全忘记了这一点,没有看到错误,谢谢你指出它!你能帮我设置lon和lat吗?请因为某些原因设置了错误的lon和lat。这可能是另一个问题,需要更多信息,请创建一个至少包含以下内容的lon和lat:1。你说的lon和lat设置错误是什么意思?2.你在看什么?3.你希望看到什么?4.演示问题的JSFIDLE或指向解决问题的页面的链接;除了您正在使用的代码之外?
var map;
function init() {
    map = new OpenLayers.Map('map');