Google Map OpenLayers Kml icon Имя - PullRequest
       40

Google Map OpenLayers Kml icon Имя

3 голосов
/ 05 октября 2011

KML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
    <name>Name</name>
    <description><![CDATA[]]></description>
    <Style id="style140"><IconStyle>
        <Icon>
            <name>Name</name>
            <href>icon/green.png</href>
        </Icon>
        </IconStyle>
    </Style>
    <Placemark>
        <name>Name</name>
        <description>Desc Name</description>
        <styleUrl>#style140</styleUrl>
        <Point>
            <coordinates>12.7548360932222,59.2701399304516,0.000000</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>

И я получаю этот вывод:

enter image description here

но я хочу это:

enter image description here

Так что вы можете увидеть название точки.Что не так в файле kml?

Thx!

Ответы [ 3 ]

2 голосов
/ 28 апреля 2012

Не знаю, помогает ли это, но я обнаружил, что метод, который вы хотите использовать, не работает. Я смог установить это программно в JavaScript. Это позволяет вам иметь метку чуть выше значка красного круга, который вы создаете сами.

Надеюсь, это поможет!

JavaScript (без другого кода для создания объекта карты и т. Д.):

function addLayer(){    
    var myStyles = new OpenLayers.StyleMap({ 
    "default": new OpenLayers.Style({ 
        strokeColor: "#FFCC33", 
        strokeWidth:10, 
        strokeOpacity:1, 
        fillColor:"#003399", 
        fillOpacity: 1, 
        externalGraphic: "icons/redcircle.png",
        labelYOffset: 15,
        pointRadius: 5,
        label:"${label}",                   
    })
});

currentLayer = new OpenLayers.Layer.Vector("KML", {
    styleMap: myStyles,
    projection: map.displayProjection,      
    strategies: [new OpenLayers.Strategy.Fixed()],          
    protocol: new OpenLayers.Protocol.HTTP({
        url: "/kml/mymap.kml",
        format: new OpenLayers.Format.KML({
            extractStyles: true,
            extractAttributes: true             
        })          
    })          
});

Файл KML:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
    <description><![CDATA[]]></description>
    <Placemark>
        <label>Name</label>
        <description>Desc Name</description>
        <Point>
            <coordinates>-122.98676101, 49.16702016,0.000000</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>
0 голосов
/ 29 сентября 2014

Вот так я решил свою проблему ... надеюсь, это поможет.

          var layerData = new OpenLayers.Layer.Vector("test1", {
                renderers: ["SVG", "Canvas", "VML"],
                strategies: [new OpenLayers.Strategy.Save({
                    auto:true
                }),new OpenLayers.Strategy.Cluster({
                    distance: clusteringDistance, 
                    threshold: clusteringThreshold, 
                    shouldCluster: function(cluster, feature) {
                        updateFeatureStyle(feature);
                        if (feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point" && boundArea >= maxBoundAreaForClustering) {
                            return OpenLayers.Strategy.Cluster.prototype.shouldCluster.apply(this, arguments);
                        } else {
                            return false;
                        }
                    }
                })],
                styleMap: clusterStyle                              
            });
            blankLayer = true;   
            layerData.setVisibility(false);                                     

function updateFeatureStyle(feature) {
    feature.style.label = "\n\n " + feature.attributes.name;            
    feature.style.labelAlign = 'ct';
    feature.style.fontColor = 'red';
    feature.style.fontFamily = 'Arial';
    feature.style.fontSize = '10px';
    feature.style.fontOpacity = 1;
    feature.style.graphicTitle = feature.attributes.name;                           
}
0 голосов
/ 05 октября 2011

Я вижу тег имени метки, отображаемый белым цветом с полной непрозрачностью по умолчанию в Google Планета Земля. Попробуйте указать элемент стиля метки в своем стиле, чтобы получить этот цвет и непрозрачность.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
    <name>Name</name>
    <description><![CDATA[]]></description>
    <Style id="style140">
    <IconStyle>
        <Icon>
            <name>Name</name>
            <href>icon/green.png</href>
        </Icon>
    </IconStyle>
        <LabelStyle>
            <color>ffff55ff</color>
        </LabelStyle>
    </Style>
    <Placemark>
        <name>Name</name>
        <description>Desc Name</description>
        <styleUrl>#style140</styleUrl>
        <Point>
            <coordinates>12.7548360932222,59.2701399304516,0.000000</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>
...