Se os usuários criarem um recurso de polígono que se sobrepõe completamente a outro, como este…
… Então não há como você selecionar o recurso interno, ou seja, aquele sobreposto pelo outro. Atualmente, estou usando um simples SelectFeature
como este:
var select = new OpenLayers.Control.SelectFeature(
[this.annotationLayer, this.controlPointsLayer], {
hover: true,
renderIntent: "temporary"
}
);
this.map.addControl(select);
select.activate();
Mas, obviamente, só consigo selecioná-lo para o recurso externo. Qual é a maneira típica de lidar com isso? Como posso possibilitar ao usuário selecionar também o recurso interno?
A solução mais simples provavelmente seria tornar o recurso externo apenas selecionável dentro da área que resta ao subtrair o recurso interno - mas não tenho idéia de como fazer isso.
Respostas:
Poucas opções. Alguns mais loucos :-) do que outros. As estratégias básicas são
==>
Ativar estratégia de clustering de recursos
Implemente seu próprio algoritmo de clustering; portanto, quando um novo item é adicionado ou modificado, o algoritmo é executado novamente e faz uma verificação aninhada de loop for e n * n (-1) para ver o que se sobrepõe ao que - em seguida, modifique a propriedade do recurso para configurar uma lista de recursos sobrepostos e quando o usuário clicar no recurso, exiba uma lista de recursos que se sobrepõem e faça com que o usuário selecione o que realmente deseja clicar. Faz sentido?
Em vez de implementar o recurso ao clicar, basta implementar um manipulador de cliques de mapa inteiro. E quando o usuário clicar, verifique na sua camada os recursos que se cruzam - e se houver um - exiba o pop-up desse cara e, se houver vários, exiba uma lista de prompt como no item 2 acima. Se nenhum se cruzar, basta ignorar.
Implemente uma opção de clique com o botão direito do mouse para "ocultar" temporariamente um recurso para permitir acesso ao recurso oculto. Assim que clicar no próximo, reexiba todos os recursos ocultos
Semelhante ao item 4, dentro do pop-up do recurso principal, adicione um item de menu / link para "ocultar" o recurso. E prossiga como no # 4.
Da mesma forma que a # 4/5, implemente um clique com o botão direito do mouse em "movimento temporário" e clique em arrastar o recurso para fora do caminho [lembre-se do local antigo]. Em seguida, o usuário clica no recurso inferior e o superior volta à sua posição original.
fonte