[OpenLayers-Users] SelectFeature and navigation

Alexandre Dubé adube at mapgears.com
Fri Aug 17 10:57:26 PDT 2012


Hi,

   At this point, I don't know what could be the cause of this 
behavior.  Could you provide a small live demo showing the issue ?

Alexandre


On 12-08-17 09:14 AM, ontwerp at limotec.be wrote:
> 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é <mailto:adube at mapgears.com>
> *Sent:* Friday, August 17, 2012 2:53 PM
> *To:* openlayers-users at lists.osgeo.org 
> <mailto: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


-- 
Alexandre Dubé
Mapgears
www.mapgears.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20120817/aa2f1c8d/attachment-0001.html>


More information about the Users mailing list