1 votos

no se puede hacer clic en los puntos en OpenLayers2

Utilizo OpenLayers 2.13.1 junto con GeoServer y PostgreSQL

Tengo un código para una capa vectorial en mi OpenLayers así

//style for layer
var style_d = new OpenLayers.Style({
 'fillColor': '${p_color}',
 'fillOpacity': .8,
 'fontColor': 'black',
 'pointRadius': 8,
 'strokeColor': 'black',
 'strokeWidth': 1,
 'fontFamily': 'Arial',
 'fontSize': 10,
 'label': '${p_name}',
 'labelAlign': 'tc',
 'labelSelect': true,
 'labelXOffset': 4,
 'labelYOffset':4,
 },
 {
    context: {
        label:function(feature) {
            if(feature.attributes['p_name']) {
                return feature.attributes.p_name;       
            } else {
                return '';
            }
        }
 },
});

//style for layer - when click a geometry
var style_select = new OpenLayers.Style({
 'fillColor': '${p_color}',
 'fillOpacity': .4,
 'fontColor': 'black',
 'pointRadius': 5,
 'strokeColor': 'black',
 'strokeWidth': .5,
 'fontFamily': 'Arial',
 'fontSize': 10,
 'label': '${p_name}',
 'labelAlign': 'tc',
 'labelSelect': true,
 'labelXOffset': 4,
 'labelYOffset':4,
 },
 {
    context: {
        label:function(feature) {
            if(feature.attributes['p_name']) {
                return feature.attributes.p_name;
            } else {
                return '';
            }
        }
 }
});

//Add a select feature control for pins
var select_feature_control = new OpenLayers.Control.SelectFeature(mylayer, {multiple: false,toggle: true});

map.addControl(select_feature_control);

//Activate the control
select_feature_control.activate();

//do stuff when clicked
function selected_feature(event){
 document.getElementById("wesmes").innerHTML="Loading";
 sf = event.feature.fid;
 var sfs = sf.split(".");
 var sff = sfs[1];
 //call a function
}

Problema :

Si hay un polígono o una línea en el mapa puedo hacer clic derecho sobre ellos y todo funciona.

Si hay un punto, tengo que hacer clic fuera del punto, cerca de él, para que se haga clic y activar el function selected_feature(event) etc, etc. Si hago clic en el punto, no pasa nada

¿Cómo puedo solucionarlo? ¿Por qué ocurre esto? Creo que es un problema de estilo. Si lo desea, puedo proporcionar más código

1voto

razor7 Puntos 422

Si usted tiene una matriz de elementos de la capa de vectores y si desea hacer algo cuando uno de los elementos de la matriz se hace clic, estoy haciendo esto:

var vectorLayer = new OpenLayers.Layer.Vector("Valori", {
    eventListeners:{
        'featureselected':function(evt){                
              alert("Element clicked!");
        },
        'featureunselected':function(evt){
              //whatever
        }
    }
});

Y funciona bien.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X