[OpenLayers-Dev] adding markers with popups as features.

Fred Arters fred at monkeytroy.com
Fri Aug 22 16:23:32 EDT 2008

Ahh..  got you now.  I was confused cause you used feature.move as in  
variable feature of type Vector.    My bad.

Yes, I see that in trunk the Vector class has a move method that is  
not in the stable release that I have.   I will take a closer look at  

Thanks again for your help!


On Aug 22, 2008, at 2:00 PM, Eric Lemoine wrote:

> As I said you use OpenLayers.Layer.Vector so you don't use
> OpenLayers.Feature but OpenLayers.Feature.Vector, which has a move()
> method, at least in trunk. Eric
> 2008/8/22, Fred Arters <fred at monkeytroy.com>:
>> Hey Eric, I know I had a lot in that last email.. but the first part
>> is...
>>>> According to the documentation and looking at the source the class
>>>> Feature does not have a move method.
>> This seems to be the case for the stable 2.5 release which I am using
>> and the trunk..
>> Here is a link to the Feature.js on trunk.  I can't find a move  
>> method.
>> http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Feature.js
>> Documentation for trunk does not show a move method either.
>> Am I looking in the wrong spot?
>> On Aug 22, 2008, at 12:15 PM, Eric Lemoine wrote:
>>> 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