Hi all,

I am having a problem integrating my openlayers implementation into my
site..
I have created a map page that needs to display cached WMS tiles(served by
tilecache), this it seems to do fine mostly. What i then need to do is click
on the map, return the Lat/Lon to an Asynch Web Service written in C# which
then launches the manifoldgis interop component to allow me to perform a
search within the geometry on the database. Now the query works,the
webservice works,the page works for most things however i cannot see what i
am doing wrong that my web service is not returning a result object or
rather it is but it's empty !

Here is the openlayers code.
=====================================
<script type="text/javascript">
        <!--
            var map, layer, x, y, markersLayer;
            OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
            OpenLayers.Util.onImageLoadErrorColor = "transparent";

            //Control Click Handler
            OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },

                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    );
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.trigger
                        }, this.handlerOptions
                    );
                },

                trigger: function(e) {

                    markerlayer.removeFeatures(markerlayer.features);
                    //map.removePopup(popup);

                    var lonlat = map.getLonLatFromViewPortPx(e.xy);

                    //var proxy =
Service.select_id_centrePoint_Geom_byLatLon(lonlat.lat,lonlat.lon,
onWebServiceCallBack);
                    var proxy =
Service.select_id_centrePoint_Geom_byLatLon(lonlat.lat,lonlat.lon,onWebServiceCallBack);
                    //var proxy = Service._Echo(lonlat.toString(),
onWebServiceCallBack);
                }

            });

            function onWebServiceCallBack(result, userContext, methodName) 
            {

                var temp = new Array();
                var s = result.toString();
                temp = s.split(',');
                var cmaID = temp[0];
                Lat = temp[1];
                Lon = temp[2];
                           
                var marker = new OpenLayers.Feature.Vector(
                        new OpenLayers.Geometry.Point(Lon, Lat), {
                            externalGraphic:
"http://localhost/TileCache/Images/marker-gold.png";,
                            backgroundGraphic: "../Images/marker-gold.png",
                            backgroundXOffset: 0,
                            backgroundYOffset: -7,
                            graphicZIndex: 1100,
                            backgroundGraphicZIndex: 1000,
                            pointRadius: 10
                        });
                //markerlayer.addMarker(marker);
                markerlayer.addFeatures(marker);
                map.addLayer(markerlayer);
                var popup = new OpenLayers.Popup("Erf Info", "chickenlicken",
                                          new OpenLayers.Size(200, 600),
                                          "Clicked at:= Longitude :" + Lon +
" \n Latitude :" + Lat , true);

                popup.setOpacity(0.7);
                map.addPopup(popup);
                alert(cmaID);
            }

            function init() {
                var street_OverLay, erven_OverLay
                x = 18.43678;
                y = -33.9068;

                //specify Resolution array - zooms                      
                var options = { resolutions: new Array(0.00001867185,
0.0000093359375, 0.00000466796875, 0.000002333984375, 0.0000011669921875),
'maxExtent': new OpenLayers.Bounds(bbox = 18.13232, -34.39155, 19.01818,
-33.39165), restrictedExtent: new OpenLayers.Bounds(bbox = 18.13232,
-34.39155, 19.01818, -33.39165) };

                // set theme:null to enable style editing on the rows
                //create a new map object
                map = new OpenLayers.Map($('map'), options);
                //set overlay
                street_OverLay = new OpenLayers.Layer.WMS("Cape Metropolitan
Council",
                "tilecache.py?TRANSPARENT=true",
                { layers: "Municipal_Overlay", transparent: "true",
'maxExtent': new OpenLayers.Bounds(18.52, -34.62, 19.28, -33.77), format:
"image/png" }, { alpha: true });
                street_OverLay.setZIndex(0);
                street_OverLay.setVisibility(true);
                street_OverLay.setIsBaseLayer(true);
                map.addLayer(street_OverLay);

                //create the erven overlay and set it to be invisible
                //erven_OverLay = new OpenLayers.Layer.WMS( "Erven Overlay",
                //    "tilecache.py?TRANSPARENT=true",
                //    {layers: "Erven_Overlay",transparent: "true", format:
"image/png",minZoomLevel: 0, maxZoomLevel: 1 },{alpha:true});
                //      erven_OverLay.setZIndex(100);
                //   erven_OverLay.setVisibility(false);
                //      /erven_OverLay.setIsBaseLayer(true);
                //    map.addLayer(erven_OverLay);


                //code to add marker layer

                markerlayer = new OpenLayers.Layer.Vector(
                "Marker Drop Shadows",
                {
                    styleMap: new OpenLayers.StyleMap({
                        // Set the external graphic and background graphic
images.
                    externalGraphic:
"http://localhost/TileCache/Images/marker-gold.png";,
                        backgroundGraphic: "../Images/marker-gold.png",
                        backgroundXOffset: 0,
                        backgroundYOffset: -7,
                        graphicZIndex: 11,
                        backgroundGraphicZIndex: 10,
                        pointRadius: 10
                    }),
                    isBaseLayer: false,
                    displayInLayerSwitcher: false,
                    rendererOptions: { yOrdering: true }
                }
            );
                map.addLayers(markerlayer);
                // Add The Control Box(es) to the page
                map.addControl(new OpenLayers.Control.LayerSwitcher()); //layer
switching tool
                //var options = {div:$('mouseco')};
                map.addControl(new OpenLayers.Control.MousePosition()); // 
mouse x
and y co-ordinates
                //map.removeControl(OpenLayers.Control.PanZoom());
                map.removeControl(map.controls[1])
                map.addControl(new OpenLayers.Control.PanZoomBar()); //Zoom 
Slider
I think
                options = { div: $('labs') };
                //map.addControl(new OpenLayers.Control.ScaleLine(options)); // 
to
give an idea of sacale
                map.addControl(new OpenLayers.Control.ScaleLine(options));
                //set the base layer this is the primary visible layer
                //options = {div: $('powered')};
                var click = new OpenLayers.Control.Click();
                map.addControl(click);
                click.activate();
                map.setBaseLayer("Cape Metropolitan Council");
                //add the overview map
                //map.addControl(new OpenLayers.Control.OverviewMap({layers:
"Municipal_Overlay",isSuitableOverview: function() {return true;}})); 
                //set the zoom and longlat of startup
                map.setCenter(new OpenLayers.LonLat(x, y), 0);
                if (!map.getCenter()) map.zoomToMaxExtent();

            }
                
      // -->
    </script>
=================================
Here is the C# Web Method
=================================

  [WebMethod]
            public string select_id_centrePoint_Geom_byLatLon(double
Latitude, double Longitude)
            {
                StringBuilder sb = new StringBuilder();
                string s;
                MapServer mapServer = new MapServer();
                string State = "";
                mapServer.Create(Server.MapPath("config.txt"), State, "");
                Manifold.Interop.Query q =
(Manifold.Interop.Query)mapServer.Document.ComponentSet["Select_Erf_CentrePoint_and_Cma_ID"];
                q.ParameterSet["Lat"].Value = Latitude.ToString();
                q.ParameterSet["Lon"].Value = Longitude.ToString();
                q.Run();
                Manifold.Interop.Table T = q.Table;
                foreach (Manifold.Interop.Record r in T.RecordSet)
                {
                    foreach (Manifold.Interop.Column c in T.ColumnSet)
                    {
                        sb.Append(r.get_Data(c.Name) + "|");
                    }
                }
                s = sb.ToString();
                return s;
            }
            [WebMethod]
            public string _Echo(string input)
            {
                return input;
            }
            [WebMethod]
            public string _WS_Test()
            {
                return "Hello World";
            }


        }


and here is the aspx page
=================================

 </head>
  <body onload="init()">
  <form runat="server">
  <asp:ScriptManager runat="server" ID="ScriptManager1"
EnablePageMethods="True">
        <Services>
            <asp:ServiceReference
Path="http://localhost/MapService_Site/Service.asmx"; />
        </Services>
        </asp:ScriptManager>
    </form>
        <div id="map">
        <div id="chickenlicken" style="position:relative;background-color: red;
color: white; font-size: 120%;left:110px;top:150px"></div>
    <div id="labs"><div id="outPutDiv"></div></div>
        <div id="powered">Powered By CMAInfo</div>
        </div>
        
   </body>
</html>

=========================================================

Really hope that someone will be able to assist me or perhaps provide a
better way. Web services are important in our project though because we need
to be able to offer various online services including mapservices.

Greetings from Cape Town(South Africa)

Sandro 

-- 
View this message in context: 
http://www.nabble.com/returning-a-value-to-openlayers-via-a-web-service.-tp19761190p19761190.html
Sent from the OpenLayers Dev mailing list archive at Nabble.com.

_______________________________________________
Dev mailing list
[email protected]
http://openlayers.org/mailman/listinfo/dev

Reply via email to