[OpenLayers-Users] SelectFeature and navigation

ontwerp at limotec.be ontwerp at limotec.be
Fri Aug 17 06:14:47 PDT 2012


Hi

The code is below.

The problem is that after a pan or zoom the onSelect function of the SelectFeature is no longer called. DragFeature still works.


<script src="@Url.Content("~/Scripts/OpenLayers/OpenLayers.debug.js")"></script>

<script>

    var map;
    var groundPLan;
    var icon;
    var markers;
    var clickedMarker = null;

    function init() {

        groundPLan = new OpenLayers.Layer.XYZ(
            'GroundPlan',
            '@Url.Content("~/Maps/" + ViewBag.Id)/${z}/${x}/${y}.jpg',
            {
                attribution: "© Limotec",
                sphericalMercator: false,
                wrapDateLine: false,
                transitionEffect: 'resize',
                buffer: 1,
                numZoomLevels: 5
            }
        );

        map = new OpenLayers.Map('map_canvas', { controls: [] });
        map.addLayer(groundPLan);
        map.addControl(new OpenLayers.Control.Attribution());
        map.addControl(new OpenLayers.Control.Navigation({ dragPanOptions: { enableKinetic: true} }));
        map.setCenter(new OpenLayers.LonLat(0, 0), 2);

        map.div.oncontextmenu = function noContextMenu(e) {
            var lonlat = map.getLonLatFromPixel(new OpenLayers.Pixel(e.layerX, e.layerY));
            $("#lat").val(lonlat.lon);
            $("#lng").val(lonlat.lat);
            $("#detList").dialog("open");
            return false;
        };

        var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
        renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers; 

        markers = new OpenLayers.Layer.Vector("Markers",
            {
                renderOptions: { yOrdering: true },
                renderers: renderer
            }
        );
        map.addLayer(markers);

        var dragFeature = new OpenLayers.Control.DragFeature(markers);
        dragFeature.onComplete = function (feature, pixel) {
            var id = feature.geometry.id;
            id = id.replace('Det_', '');

            var lonLat = map.getLonLatFromPixel(pixel);
            $.post(
                '@Url.Action( "MoveDet", "Api" )',
                { id: id, lat: lonLat.lon, lng: lonLat.lat }
            );
        }
        map.addControl(dragFeature);
        dragFeature.activate();

        var clickFeature = new OpenLayers.Control.SelectFeature(markers);
        clickFeature.handlers.feature.stopDown = false;
        clickFeature.onSelect = function (feature) {
            var id = feature.geometry.id;
            id = id.replace('Det_', '');
            $.post('@Url.Action("GetDetectorById", "Api")',
                { detId: id },
                function (data) {
                    if (data.Id != null) {
                        clickedMarker = feature;
                        $("#lat").val(data.X);
                        $("#lng").val(data.Y);
                        OpenDetector(data.Id, data.InTest, data.InService, data.Name);
                    } else {
                        alert(data);
                    }
                }
            );
        }

        map.addControl(clickFeature);
        clickFeature.activate();
    }

    function SetMarkerIcon(det, type) {
        var lat = parseFloat(det.Lat);
        var lng = parseFloat(det.Lng);
        var id = "";
        if (type != "optical") {
            id = "fire_" + det.Id;
        } else {
            id = "detIcon_" + det.Id;
        }

        var marker = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lat, lng));
        marker.style = {
            externalGraphic: '@Url.Content("~/Images/Icons/Optical.png")',
            graphicOpacity: 1.0,
            graphicWidth: 30,
            graphicHeight: 30,
            graphicYOffset: -15,
            graphicXOffset: -15,
            cursor: 'pointer',

            backgroundGraphic: '@Url.Content("~/Images/Icons/Optical_Shadow.png")',
            backgroundXOffset: -12,
            backgroundYOffset: -12,

            graphicZIndex: 11,
            backgroundGraphicZIndex: 10
        }
        marker.url = '@Url.Action("MoveDet", "Api")';
        marker.geometry.id = "Det_" + det.Id;
        markers.addFeatures(marker);        
    }

    $(document).ready(function () {
        init();
    });

</script>

greetings
Ruben

From: Alexandre Dubé 
Sent: Friday, August 17, 2012 2:53 PM
To: openlayers-users at lists.osgeo.org 
Subject: Re: [OpenLayers-Users] SelectFeature and navigation

Hi Ruben,

  Would you please provide more details, like a live short demo showing the issue or paste some code ?  The SelectFeature control doesn't deactivates itself after a pan or zoom, so we need to find out why it does in your case.

  To help you find out what the issue is, you can minimize your code step by step.  This nice article mentions a lot about this, I'd suggest you read it first :
    http://docs.openlayers.org/help/minimize.html

Best regards,

Alexandre


On 12-08-17 04:27 AM, ontwerp at limotec.be wrote:

  Hello

  When the map is loaded the selectfeature works, but after a pan or zoom it doesn’t. It seems that the selectfeature is deactivated after pan or zoom.
  Is there a way to reactivate the selectfeature after a pan or zoom?

  greetings
  Ruben

   

_______________________________________________
Users mailing list
Users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users



-- 
Alexandre Dubé
Mapgears
www.mapgears.com


--------------------------------------------------------------------------------
_______________________________________________
Users mailing list
Users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20120817/b39a2cde/attachment.html>


More information about the Users mailing list