多点openlayer,只显示最后一个

时间:2015-04-14 22:51:32

标签: openlayers

请帮我解决这个问题。

我有一个路线查找器,显示一个列表并映射车辆通过的各个点。当我点击列表中的某个项目时,可以在地图中看到该点,但是当我在同一位置有两个点(例如point1,point2)时,只显示最后一个点(point2)

当我点击point1时,我不知道如何做到这一点此点位于point2上方,反之亦然

我的代码是:

// When I clic in a item of the list
function searchPoint(x, y, zoom) {

if (x != 0 && x != '0' && x != '0.0') {
    map.setCenter(
    new OpenLayers.LonLat(x, y).transform(
            new OpenLayers.Projection("EPSG:4326"),
            map.getProjectionObject()
        ), zoom
    );
}
}

layerRutasPuntosHistorial = new OpenLayers.Layer.Vector("Rutas Puntos Historial", {
    //rendererOptions: { zIndexing: true },
    strategies: [new OpenLayers.Strategy.Fixed()],
    protocol: new OpenLayers.Protocol.HTTP({
        url: "trackWeb.asmx/obtenerRutasPuntosHistorial",
        readWithPOST: true,
        params: { idDispositivo: $("#ddlDispositivos").val(), tipo: $(".datavalor.active").attr("data-valor"), fechaInicial: $("#txtFechaDesde").val(), fechaFinal: $("#txtFechaHasta").val() },
        //params: { idDispositivo: $("#ddlDispositivos").val(), tipo: $(".btnTile.selectDates.selected").attr("data-valor"), fechaInicial: $("#txtFechaDesde").val() + " " + $("#ddHoraIn").val() + ":" + $("#ddMinutoIn").val() + ":00", fechaFinal: $("#txtFechaHasta").val() + " " + $("#ddHoraOut").val() + ":" + $("#ddMinutoOut").val() + ":00" },
        headers: { "Content-Type": "application/json; charset=utf-8" },
        format: new OpenLayers.Format.GeoJSON(),
        contentType: 'application/json; utf-8',
        dataType: 'json',
        async: true
    }),
    styleMap: stylesRutas
});


var stylesRutas = new OpenLayers.StyleMap({
    "default": new OpenLayers.Style(null, {
        rules: [
        new OpenLayers.Rule({
            symbolizer: {
                "Point": {
                    pointRadius: 6,
                    graphicName: "circle",
                    fillColor: "#F78F1E",
                    fillOpacity: 1,
                    strokeColor: "#F78F1E",
                    labelOutlineColor: "#F78F1E",
                    cursor: "pointer",
                    label: "${numero}",
                    fontColor: "#fff",
                    fontOpacity: 1,
                    fontFamily: "Arial",
                    fontSize: 9,
                    fontWeight: "600",
                    //graphicZIndex: 10,
                    //labelZIndex: 10,

                    //graphicZIndex : 9999999,
                    //zIndex: 99999999,
                }
            }
        })
        ]
    })
});

1 个答案:

答案 0 :(得分:0)

您正在通过geoJson文件中的x,y查找。从逻辑上讲,计算机将按照检索的顺序查找和呈现项目,首先是point1,第二是point2。由于您没有为计算机提供任何名称,因此计算机无法确切地了解您想要的任何名称。

示例集:{{x,y},{x,y},{a,b},{c,d},{e,f}}

现在您要求计算机获取{x,y}

怎么知道,你想要哪一个?它没有。据其所知,一个{x,y}与另一个没有什么不同。

您可以反向排序geoJSON文件,但是您可能会遇到与您的情况相反的情况,您希望显示第二个点而不是第一个点。但如果您不关心这一点 - 只需反向排序geoJSON。