[OpenLayers-Dev] adding markers with popups as features.
Eric Lemoine
eric.c2c at gmail.com
Fri Aug 22 12:15:23 EDT 2008
Hi. If you use Vector.Layer then your feature class should be
Feature.Vector, which further means you should be able to do
feature.move(). IIRC move takes either an OpenLayers.Pixel or an
OpenLayers.LonLat as an argument. My comments apply to current trunk,
you may want to check that they apply to the version of OL you're
using. Cheers. Eric
2008/8/22, Fred Arters <fred at monkeytroy.com>:
> Hey Eric,
>
> I looked into this a bit yesterday.. here is what I found.
>
> According to the documentation and looking at the source the class
> Feature does not have a move method.
>
> According to the documentation, the class Vector *does* have a move
> method. However, if you attempt to call move on a vector object, it
> throws a javascript error saying the object has no move method.
> Looking at the source confirms that there is no move method.
>
> The Vector's geometry attribute is a Point which has a move method. I
> tried that and it did redraw the point but it draws it using relative
> pixels for the x, y values. So move (5, 5) does not move it to lon:
> 5, lat: 5 but it moves it 5px up and 5px to the right.
>
> Looking at the source for the move method on the Point class I noticed
> move function does this.x = this.x + x. Then it calls clearBounds().
>
> So I did this...
>
> function myMove(pID, pLon, pLat) {
>
> var v = vectorLayer.getFeatureById(pID);
>
> v.geometry.x = pLon;
> v.geometry.y = pLat;
> v.geometry.clearBounds();
> v.layer.drawFeature(v);
> }
>
> And that worked. Though it feels like a hack. Seems like there
> should be a move method to do this in addition to the move method to
> move a Point in relative pixels.
>
> How would I suggest such a change or did I miss a more correct way to
> do this?
>
> Thanks for you help on this btw.
>
> -Fred
>
>
> On Aug 22, 2008, at 3:35 AM, Eric Lemoine wrote:
>
>> On Thu, Aug 21, 2008 at 11:51 PM, Fred Arters <fred at monkeytroy.com>
>> wrote:
>>> Thanks for the advice. I have it working now using Vector with an
>>> externalSymbol style as you suggest. Seems to work fine and a bit
>>> cleaner
>>> as I don't have to add a separate pop up and marker for each feature.
>>> Thanks.
>>>
>>> Though I do have a question... what would be the correct way to
>>> then move
>>> one of my marker as a vector? For a feature all I had to do was
>>> set the
>>> lonlat attribute and refresh the layer and it moved.. but that
>>> doesn't seem
>>> to work with a Vector. The documentation says there is a move
>>> function but
>>> it fails and looking at the code does not seem to be there.
>>
>> Doing feature.move(px) or feature.move(lonlat) should work. Both the
>> Feature.Vector and Geometry.Point classes include move methods. If
>> that doesn't work, please come back with a simple example.
>>
>>
>>>
>>> I didn't see it but is there an example that does this too?
>>
>> No that I'm aware.
>>
>> Thanks,
>>
>> --
>> Eric
>
>
More information about the Dev
mailing list