[OpenLayers-Users] Start edge and end edge from Popup
carlofrancesco
gentuser at gmail.com
Mon Dec 14 04:44:49 EST 2009
carlofrancesco wrote:
>
> Hi all. I'm new to this beautiful openLayer. What I am doing i simple:
> using openlayer + pgrouting.
> My question is this: I want to set over the map a Start Point and an End
> Point to pass to pgrouting from a popup. I'll explain better.
> I'm using the code shown here :
> http://pgrouting.postlbs.org/wiki/Workshop-RoutingRequest
>
> In detail iìll focus on:
>
> var SinglePoint = OpenLayers.Class.create();
> SinglePoint.prototype =
> OpenLayers.Class.inherit(OpenLayers.Handler.Point, {
> createFeature: function(evt) {
>
> this.control.layer.removeFeatures(this.control.layer.features);
>
> OpenLayers.Handler.Point.prototype.createFeature.apply(this, arguments);
> }
> });
>
> // controls
> controls = {
> start: new OpenLayers.Control.DrawFeature(start,
> SinglePoint),
> stop: new OpenLayers.Control.DrawFeature(stop, SinglePoint)
> }
> for (var key in controls) {
> map.addControl(controls[key]);
> }
> }
>
> function toggleControl(element) {
> for (key in controls) {
> if (element.value == key && element.checked) {
> controls[key].activate();
> } else {
> controls[key].deactivate();
> }
> }
> }
>
>
>
> This code works very well, i put start point and end point, i click on
> compute and it trace the path. All perfect.
>
> But now i want to create a search form like google map, clicking on one
> result and create a popup that show me name of the street and "start from
> here" , and "arrive here", same of google map.
>
> So i wrote this code:
>
> function displayViaOnMap(response){
> if (response && response.responseXML) {
> via_selezionata.removeFeatures(via_selezionata.features);
> // parse the features
> edges = response.responseXML.getElementsByTagName('edge');
> var features = [];
>
> for (var i = 0; i < edges.length; i++) {
> var gid,street,fromleft, toleft, fromright, toright;
>
> gid=edges[i].getElementsByTagName('id')[0].textContent;
>
> street=edges[i].getElementsByTagName('street')[0].textContent;
>
> comune=edges[i].getElementsByTagName('comune')[0].textContent;
>
> /*fromleft=edges[i].getElementsByTagName('fromleft')[0].textContent;
>
> toleft=edges[i].getElementsByTagName('toleft')[0].textContent;
>
> fromright=edges[i].getElementsByTagName('fromright')[0].textContent;
>
> toright=edges[i].getElementsByTagName('toright')[0].textContent; */
> var g =
> parser.read(edges[i].getElementsByTagName('wkt')[0].textContent);
>
> // non va bene features.push(new
> OpenLayers.Feature.Vector(g));
> features.push(g);
> }
> //questo inserisce all'interno del vettore via le features appena
> trovate
> via_selezionata.addFeatures(features);
> createPopup(features[0],street,comune);
>
> }
> }
>
> function createPopup(feature,street,comune) {
>
> //rimuovo gli altri popup
> if(map.popups.length>0){rimuoviPopups();}
> var center= feature.geometry.getBounds().getCenterLonLat();
> var popup_info = "" + street +
> "<br>Comune: " + comune +
> "<br>a href='javascript:setStart("+center+")'
> >Parti da qui /a" +
> "<br>a href='javascript:setStop("+center+")'
> >Arriva qui /a" +
> "";
>
> popup = new OpenLayers.Popup.AnchoredBubble("ViaInfo",
> center,
> new OpenLayers.Size(200,100),
> popup_info,
> null,
> true);
>
> popup.setBackgroundColor("#bcd2ee");
> popup.setOpacity(.85);
> map.addPopup(popup);
> //mi centro la mappa sulla mia nuvolletta
> map.setCenter(center, zoomz+1);
>
> }
>
>
> function rimuoviPopups() {
> while( map.popups.length ) {
> map.removePopup(map.popups[0]);
> }
>
> }
> function setStart(x,y){
>
> }
> function setStop(x,y){
>
> }
>
>
> Now i need an help to create function setStart and setStop point. How i
> can Initialize SinglePoint defined as an Handler Point to a Point on the
> map like
>
> var point = new OpenLayers.Geometry.Point(x,y);
> where x,y is coordinate of
> feature.geometry.getBounds().getCenterLonLat();
> Thanks for any advice !!
>
Up, no suggestion? Thanks again
--
View this message in context: http://n2.nabble.com/Start-edge-and-end-edge-from-Popup-tp4151122p4163191.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
More information about the Users
mailing list