0

私のコードは完全に正常に機能しますが、「マーカー」をクリック/ホバーするたびに、openLayerはローカルサーバーから画像(.png)を取得しようとします。これは私のコードであり、画像は直接指定されていません。この動作を禁止するために何を上書きするかわからない:

これは、「onSelect」で発生するエラーです。

GET http://localhost:8888/img/cloud-popup-relative.png 404 (Not Found) 

これは私のコードです。GETリクエストが繰り返されるとパフォーマンスが低下するため、誰かが助けてくれることを願っています。

var lonlat = convertProjectionToSphere(location);
    console.log(lonlat);
    var pointFeatures = [];

    var pointGeometry = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
    var pointFeature = new OpenLayers.Feature.Vector(
        pointGeometry,
        null,
        {
            pointRadius: 16,
            fillOpacity: 0.7,
            externalGraphic:'img/mapIcons/Multi-Wave-test.png'
        });
    pointFeatures.push(pointFeature);

    // Add features to the layer
    var pointLayer = map.getLayer('Vectors');
    pointLayer.addFeatures(pointFeatures);

    // Add select feature control required to trigger events on the vector layer.
    var selectControl = new OpenLayers.Control.SelectFeature(pointLayer, {
        hover: true,
        onSelect: function(feature) { // last point in my code from the stack trace
            var layer = feature.layer;
            feature.style.fillOpacity = 1;
            feature.style.pointRadius = 20;
            //layer.drawFeature(feature);
            var content =   '<div style="background-color:white;"><strong>Feature:</strong>'+
                            '<br/>' + feature.id +
                            '<br/><br/><strong>Location:</strong>'+
                            '<br/>' + feature.geometry +'</div>';
            var popup = new OpenLayers.Popup.FramedCloud(
                            feature.id+"_popup",
                            feature.geometry.getBounds().
                            getCenterLonLat(),
                            new OpenLayers.Size(250, 100),
                            content,
                            null,   // anchor
                            true,   // closeBox exists
                            null); //closeBoxCallback
            feature.popup = popup;
            map.addPopup(popup);
        },
        onUnselect: function(feature) {
            var layer = feature.layer;
            feature.style.fillOpacity = 1;
            feature.style.pointRadius = 16;
            feature.renderIntent = null;
            layer.drawFeature(feature);
            map.removePopup(feature.popup);
        }
    });
    map.addControl(selectControl);
    selectControl.activate();
4

1 に答える 1

0

「 FramedCloud」ポップアップを使用しています。OpenLayersがロードしたい画像は、そのポップアップの境界です。画像は、OpenLayers-distributionに付属する「img」フォルダーに含まれています。OpenLayers.ImgPathを介して画像フォルダーへのパスを変更できます。ここにリンクがあります。または、アンカー付きのような単純なポップアップスタイルを使用することもできます。フレームとして画像を使用していないと思います。

于 2012-10-18T13:53:50.927 に答える