Openlayers 3カスタムイベント

2703 ワード

Ol3 popup function init(){ var format = 'image/png'; var bounds = [73.4510046356223, 18.1632471876417, 134.976797646506, 53.5319431522236]; // wfs var wfsVectorLayer = new ol.layer.Vector({ source: new ol.source.Vector({ format: new ol.format.GeoJSON({ geometryName: 'the_geom' }), url: 'http://localhost:8081/geoserver/map/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=map:capital&maxFeatures=50&outputFormat=application/json' }) }); // feature var feature1 = new ol.Feature({ geometry: new ol.geom.Point([117, 38]) }); // 100 , feature1.setStyle(new ol.style.Style({ image: new ol.style.Circle({ radius: 30, fill: new ol.style.Fill({ color: 'red' }) }) })); var map = new ol.Map({ controls: ol.control.defaults({ attribution: false }), target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM({ projection:ol.proj.getTransform('EPSG:3857','EPSG:4326') }) }), wfsVectorLayer, new ol.layer.Vector({source: new ol.source.Vector({ features: [feature1] })})], view: new ol.View({ projection: 'EPSG:4326', center:[117,42], zoom:6 }) }); map.getView().fit(bounds, map.getSize()); map.on('pointermove', function(event){ if(map.hasFeatureAtPixel(event.pixel)){ map.forEachFeatureAtPixel(event.pixel, function(feature){ // feature mousemove feature.dispatchEvent({type: 'mousein'}); }); } else { feature1.setStyle(new ol.style.Style({ image: new ol.style.Circle({ radius: 30, fill: new ol.style.Fill({ color: 'red' }) }) })); } }); // feature1 mousemove feature1.on('mousein', function(){ // feature 100 , this.setStyle(new ol.style.Style({ image: new ol.style.Circle({ radius: 30, fill: new ol.style.Fill({ color: 'blue' }) }) })); }); }