Ah yes, the use of alerts.  Good work!

On 4/12/2012 1:34 PM, Curtis Olson wrote:
Hi all,

I think I have figured this out -- after some tedious back and forth through the documentation and dumping out intermediate structures with "alert".

If I start with this:

var route_points = new Array();
var multipoint = new OpenLayers.Geometry.MultiPoint(route_points);
var route = new OpenLayers.Feature.Vector(multipoint);
myLayer.addFeatures( route );

Then later I can get the point list by accessing:

var pts = route.geometry.components;

Then I can modify a point by:

pts[3].lon = newlon;
pts[3].lat = newlat;

And then I need to call myLayer.redraw() to see the change. I can add or remove points to this list as well. Seems to do the trick!

Thanks,

Curt.


On Thu, Apr 12, 2012 at 12:01 PM, Michael <[email protected] <mailto:[email protected]>> wrote:

    Hi Curt

    Yes, as I recall (and I will dig into my code as soon as I pay
    bills) a copy is constructed.  So you need to walk through the
    points in the line itself and find the one that matches the one
    you want to change (I gave them all ids).  THEN change it, THEN
    redraw the line.  If you are doing a lot of lines or points, do
    them all then redraw the layer.

    Michael


    On 4/12/2012 9:36 AM, Curtis Olson wrote:
    Hi Michael (and everyone else who replied),

    Thanks for your quick replies.  I'm working on this some more
    today and have some follow up questions.

    I define my point list in the global scope:

    var route_points = new Array();

    Then I populate this array with a few points.

    Finally I can build the structures and add the result to a layer
    so I can see it (and I do see the result.)

    lineString = new OpenLayers.Geometry.LineString(route_points);
    route_vector = new
    OpenLayers.Feature.Vector(lineString,null,home_style);
    routeLayer.addFeatures( route_vector );

    Later I go back and change the location of a point in my
    route_list array of points.

    route_points[2].lon = newlon;
    route_points[2].lat = newlat;

    But nothing changes on screen.  (for what it's worth, I can
    recreate all these structures and add them as a new layer to my
    map and I do see the new points in their correct locations, but
    it's as a new feature along with the old -- I'm hoping to be able
    to simply modify the old structure rather than having to create a
    new (potentially large/complex) structure each iteration.

    I am wondering if the lineString or the Vector constructors use a
    copy of the upstream structure rather than a pointer to the
    structure? In that case changing my original structure would have
    no effect.

    I wouldn't mind using accessor functions to find the actual data
    point, but as I look through the class definitions
    and inheritance, I don't see any way to get back to the original
    point array when starting from a Vector() or a LineString()?

    I'm probably missing something stupid or easy, but I'm just not
    seeing it?  Am I on the right track or missing by a mile?

    Thanks,

    Curt.



    On Wed, Apr 11, 2012 at 2:22 PM, Michael <[email protected]
    <mailto:[email protected]>> wrote:

        Both are doable.  You need to do a little digging to be sure
        you are pointing to the correct point when you either change
        its lonlat or delete it.  Then you need to redraw the line.

        In my application, I maintained a separate array pointing to
        the points in my line.  Possibly not the most efficient, but
        it worked.

        Michael


        On 4/11/2012 12:08 PM, Curtis Olson wrote:
        Hi,

        I've begun my plunge into openlayers and have a number of
        things working, but I've run into a question that I haven't
        been able to answer for myself from the docs and the mailing
        list archives.

        I am building a map that will live track an object (for
        example: my aircraft location as I fly in the FlightGear
        flight simulator.)

        I would like to leave a trail behind myself showing my
        recent path (say for the past 10 seconds or the past 10
        minutes.)  I am imagining a LineString where I can insert
        new points at one end and remove points from the other end
        -- as my position updates.

        I could create an entirely new LineString and Vector and add
        that to my layer 10x a second (removing the old feature),
        but I was hoping I could just build the linestring once, add
        it too a layer once, and from then on just modify the
        linestring structure.

        Is something like this possible or am I barking up the wrong
        tree?

        I have another sort of similar situation where I may want to
        additionally modify the point locations of some of the
        points in the linestring (based on external data coming from
        the flight simulator.)  In otherwords I want to reshape the
        linestring by adjusting the locations of individual points.
         Is anything like this possible?

        I've been hunting through the examples and the documentation
        and haven't stumbled on the appropriate magic yet.

        Any tips or pointers or nudges for an openlayers newbie?

        Thanks,

        Curt.
-- Curtis Olson:
        http://www.atiak.com - http://aem.umn.edu/~uav/
        <http://aem.umn.edu/%7Euav/>
        http://www.flightgear.org - http://gallinazo.flightgear.org



        _______________________________________________
        Users mailing list
        [email protected]  <mailto:[email protected]>
        http://lists.osgeo.org/mailman/listinfo/openlayers-users

        _______________________________________________
        Users mailing list
        [email protected] <mailto:[email protected]>
        http://lists.osgeo.org/mailman/listinfo/openlayers-users




-- Curtis Olson:
    http://www.atiak.com - http://aem.umn.edu/~uav/
    <http://aem.umn.edu/%7Euav/>
    http://www.flightgear.org - http://gallinazo.flightgear.org



    _______________________________________________
    Users mailing list
    [email protected]  <mailto:[email protected]>
    http://lists.osgeo.org/mailman/listinfo/openlayers-users

    _______________________________________________
    Users mailing list
    [email protected] <mailto:[email protected]>
    http://lists.osgeo.org/mailman/listinfo/openlayers-users




--
Curtis Olson:
http://www.atiak.com - http://aem.umn.edu/~uav/ <http://aem.umn.edu/%7Euav/>
http://www.flightgear.org - http://gallinazo.flightgear.org



_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to