Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 OpenLayers设置中心&x2B;快速移动_Javascript_Jquery_Openlayers - Fatal编程技术网

Javascript OpenLayers设置中心&x2B;快速移动

Javascript OpenLayers设置中心&x2B;快速移动,javascript,jquery,openlayers,Javascript,Jquery,Openlayers,我正在尝试用openlayers替换google地图。这对我来说是新鲜事。我将它与Jquery一起使用 在我的dom中具有数组位置: var locations = [ ['Name', 40.383089062,49.863707274,'Address','phone','branch'], ....etc ]; 带有解析标记的My Int脚本: var map; var sprintersLayer; var Popup; //Marker settings (ico

我正在尝试用openlayers替换google地图。这对我来说是新鲜事。我将它与Jquery一起使用

在我的dom中具有数组位置:

var locations = [
     ['Name', 40.383089062,49.863707274,'Address','phone','branch'],
     ....etc
];
带有解析标记的My Int脚本:

var map;
var sprintersLayer;
var Popup;
//Marker settings (icon, size, and etc.)
var defaultStyleMap = {
    externalGraphic: "/img/marker2.png",
    graphicOpacity: 1.0,
    graphicWidth: 27,
    graphicHeight: 40,
    graphicYOffset: -40,
    graphicZIndex: 99
};

function init() {
    sprintersLayer = new OpenLayers.Layer.Vector("Sprinters", {
        styleMap: new OpenLayers.StyleMap(defaultStyleMap)
    });
    
    
    map = new OpenLayers.Map({
        div: "map_canvas",
        projection: new OpenLayers.Projection("EPSG:900913"),
        units: "m",
        restrictedExtent: new OpenLayers.Bounds(4400000, 4600000, 5700000, 5500000)
    });
    map.displayProjection = new OpenLayers.Projection("EPSG:4326");

    var gomapLayer = new OpenLayers.Layer.OSM("GoMap.Az", "https://maps.gomap.az/info/xyz.do?lng=az&x=${x}&y=${y}&z=${z}&f=jpg", { 
        'buffer': 0, attribution: "(c) GoMap",tileOptions: { crossOriginKeyword: null },
        transitionEffect: 'resize',
        zoomOffset: 7, 
        numZoomLevels: 12, 
        maxResolution: 1222.99245234375 
    });
    
    var googlemapLayer = new OpenLayers.Layer.Google("Google Satellite",{type: google.maps.MapTypeId.SATELLITE, MIN_ZOOM_LEVEL: 7, MAX_ZOOM_LEVEL: 18});
    
    map.addLayers([gomapLayer,googlemapLayer,sprintersLayer]);
    map.addControl(new OpenLayers.Control.LayerSwitcher());
    map.addControl(new OpenLayers.Control.TouchNavigation({
        dragPanOptions: {
            enableKinetic: true
        }
    }));
    
    click = new OpenLayers.Control.SelectFeature(
        [sprintersLayer],
        {
            clickout: true, toggle: false,
            multiple: false, hover: false,
            toggleKey: "ctrlKey", // ctrl key removes from selection
            multipleKey: "shiftKey" // shift key adds to selection
        }
    );
    
    map.addControl(click);
    
    sprintersLayer.events.on({
        "featureselected": function(e) {
            //alert('selected');
            click.unselectAll();
            map.panTo(e.feature.lonlat);
            showPopup(e.feature);
        },
        "featureunselected": function(e) {
        }
    });
    
    click.activate(); 
    map.setCenter(new OpenLayers.LonLat(49.882222,40.395278).transform(
        new OpenLayers.Projection("EPSG:4326"),
        map.getProjectionObject()
    ), 0);
    
    loadMarkers();
}


function loadMarkers(map, locations, tpl){
    var i=0;
    $.each(locations, function () {
        
        var name = locations[i][0]
        var lat = locations[i][1]

        var lon = locations[i][2]
        var info = locations[i][3]
        var di = locations[i][4]
        
        var lonlat = new OpenLayers.LonLat(lon, lat).transform(
            new OpenLayers.Projection("EPSG:4326"),
            map.getProjectionObject()
        );

        var flag = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(Math.floor(lonlat.lon), Math.floor(lonlat.lat)), { description: 'flag' }, defaultStyleMap);
        flag.fid = i++;
        flag.x = lonlat.lon;
        flag.y = lonlat.lat;
        flag.lonlat = lonlat;
        flag.nm = name;
        flag.info = info;
        sprintersLayer.addFeatures(flag);
    
    });
    mapShowArea();
}

function mapShowArea(){
    var features = sprintersLayer.features;
    if (features.length > 1){
        var k=0;
        for(var j=0; j<features.length; j++) {
        var feature = features[j];
            k++;
            if (k==1){
                xmin = feature.x;
                ymin = feature.y;
                xmax = feature.x;
                ymax = feature.y;
            }
        
            if (feature.x < xmin) xmin = feature.x;
            if (feature.x > xmax) xmax = feature.x;
            if (feature.y < ymin) ymin = feature.y;
            if (feature.y > ymax) ymax = feature.y;
        
        }
        var bounds = new OpenLayers.Bounds();
        bounds.extend(new OpenLayers.LonLat(xmin, ymin));
        bounds.extend(new OpenLayers.LonLat(xmax, ymax));
        map.zoomToExtent(bounds);
    }else if (features.length == 1){
        var feature = sprintersLayer.features[0];
        var lonlat = new OpenLayers.LonLat(feature.x, feature.y);
        map.setCenter(lonlat, 11);      
    }
}

function showPopup (flag) {
    if (Popup == undefined) {
        Popup = new OpenLayers.Popup.FramedCloud("Info",
            map.getCenter(),
            new OpenLayers.Size(300, 200),
            flag.info,
            null,
            true,
            null);
        
        Popup.autoSize = true;
        Popup.fixedRelativePosition = true;
        PopuprelativePosition = "br";
        Popup.panMapIfOutOfView = true;
        map.addPopup(Popup);
    }
    
    Popup.hide();
    
    if (flag.lonlat) {
        Popup.lonlat = flag.lonlat;
        Popup.updatePosition();
    }
    
    Popup.setContentHTML(flag.info);
    Popup.updateSize();
    Popup.show();
}

这似乎可行,但我无法让地图在特定的图钉上缩放。单击并尝试居中查看后,设置中心刷新地图。

如果您要用OpenLayers替换google地图,您选择非常过时的OpenLayers 2有什么原因吗?最新的ist OpenLayers 6.4.3。如果您不想使用绑定器,请参见此处的快速入门:可以通过单击侦听器对pin进行缩放,类似于此示例:
<a class="bl_l_item" data-id="0" data-sort="branch" href="javascript:void(0)">
    Office name
<div class="map-desc mg-t-10">
    <p> Address here </p>
    <p> Phone Here </p>
</div>
</a>
if($(".map").length>0){
    init();
    $(document).on('click', '.bl_l_item', function(e) {
        var i = parseInt($(this).attr("data-id"));
        map.setCenter(new OpenLayers.LonLat(locations[i][1],locations[i][2]).transform(
            new OpenLayers.Projection("EPSG:4326"),
            map.getProjectionObject()
        ), 0);
        //google.maps.event.trigger(markers[i], 'click'); ---- my old google maps function
    })
}