[OpenLayers-Users] Re: Write text on a map
gbrun
gbrun at myopera.com
Tue Aug 30 09:13:13 EDT 2011
With my GeoExt code, it looks like that (there is also something for the
font size):
var labelForm = new Ext.form.FormPanel({
items:[{
xtype: "textarea",
name: "label",
value: "",
fieldLabel: "Text "
},{
xtype: "combo",
store: [10,12,14,16,18,20,22,24,26,28,30],
displayField: "fontsize",
fieldLabel: "Font size ",
typeAhead: true,
mode: "local",
triggerAction: "all",
editable: false,
}],
buttons: [{
text: "Validate",
handler: function() {
var labelValue = labelForm.items.items[0].getValue(); //get the typed
text
var fontSize = labelForm.items.items[1].getValue(); /:get the
selected font size
e.feature.style = {label: labelValue, labelSelect: true, fontSize:
fontSize}; //labelSelect allows to drag the text
labelWindow.close(); //The labelForm is shown in an Ext.Window
drawLayer.redraw(); //Refresh needed to apply the label
}
}]
});
This code is inserted in a drawFeature control, on "featureAdded". The
drag property works if you have and activate an OpenLayers control
allowing to drag a feature on the same layer (like a dragFeature or
modifyFeature control). In this case, you can select directly the text
without displaying any point.
If you adapt the code for OpenLayers, it should work without GeoExt.
Geoffrey
On Tue, 30 Aug 2011 15:03:30 +0200, Tobias Reinicke <ramotswa at gmail.com>
wrote:
> Any chance you could share your code / show an example? would be
> interested to see the dragging functionality.
>
> THanks,
>
> Toby
>
> On 30 August 2011 13:39, gbrun <gbrun at myopera.com> wrote:
>> Thanks! That's just what I have done! It works great! But I didn't use
>> the
>> attributes property: I don't need to save the label text in a database.
>> I
>> store the written text directly inside the 'label' property. It's also
>> useful to add a 'labelSelect' property with 'true' to drag the text once
>> written. It could be interesting to create an OpenLayers example about
>> this.
>> It is a very simple tip, but quite useful.
>>
>> PS: it works also with GeoExt and a FormPanel to write the text.
>>
>> Geoffrey
>>
>>
>> On Tue, 30 Aug 2011 13:50:38 +0200, Frost89
>> <kristian_frost7 at hotmail.com>
>> wrote:
>>
>>> Try adding a drawfeature control, that prompts for a text and sets it
>>> as
>>> the
>>> label. Should be something like this this:
>>>
>>> var control = new OpenLayers.Control.DrawFeature(
>>> layer,
>>> OpenLayers.Handler.Point, {
>>> featureAdded: function(feature) {
>>> feature.attributes.text = prompt('Write here:', '');
>>> feature.style.label = feature.attributes.text;
>>> feature.layer.drawFeature(feature);
>>> }
>>> }
>>> );
>>>
>>> -----
>>> Best regards,
>>> Kristian Frost
>>> Webintegrator
>>> Orbicon Informatik
>>> --
>>> View this message in context:
>>> http://osgeo-org.1803224.n2.nabble.com/Write-text-on-a-map-tp6741079p6741765.html
>>> Sent from the OpenLayers Users mailing list archive at Nabble.com.
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>>
>>
>> --
>> Using Opera's revolutionary email client: http://www.opera.com/mail/
>> _______________________________________________
>> Users mailing list
>> Users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>>
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Users
mailing list