iT邦幫忙

0

d3.js 顯示被元素覆蓋

https://ithelp.ithome.com.tw/upload/images/20200519/20122463tMiopiBM4M.png

這是我的呈現結果,然後滑鼠碰觸點時,會有顯示框
但是現在被其他點覆蓋了,而且顯示框也明顯變淺
請問有什麼方法可以解決?

如果我點了有被其他圓點覆蓋的點時,有可能把被覆蓋的圓點往上移嗎?

這是我的程式碼

 <style>
    div.tooltip {
        display: none;
        position: absolute;
        text-align: center;
        width: 130px;
        height: 50px;
        padding: 2px;
        color:black;
        font: 12px sans-serif;
        background: lightsteelblue;
        border: 0px;
        border-radius: 8px;
        pointer-events: none;
    }
    </style>
  <script>  
  ...
  var div = d3.select("body").append("div")
        .attr("class", "tooltip")
        .style("opacity", 0);
 var circle = elemEnter.append("circle")
            .attr('cx', function (d) { return projection([d.gps_lon, d.gps_lat])[0] })//lon:經度
            .attr('cy', function (d) { return projection([d.gps_lon, d.gps_lat])[1] })
            //.attr("r", function (d) { return size(d.AirBox.s_h0) })
            .attr("r", 8)
            .style("fill", function (d) {
                var set_color = d.s_d0
                if (set_color < 15 && set_color >= 0) { return "#00FF00" }
                else if (set_color < 35 && set_color >= 15) { return "#FFFF00" }
                else if (set_color < 54 && set_color >= 35) { return "#FF7F00" }
                else if (set_color < 150 && set_color >= 54) { return "#FF0000" }
                else if (set_color < 250 && set_color >= 150) { return "#9932CC" }
                else if (set_color >= 251) { return "#8B0A50" }
            })
            //      return color(d.AirBox.s_h0) })
            .attr("stroke", "#69b3a2")
            .attr("stroke-width", 2)
            .style("opacity", 0.8)//透明度
            .on("mouseover", function (d) {
                //console.log("just had a mouseover", d3.select(d));
                d3.select(this).attr("r", 14);
                div.transition()
                    .duration(200)
                    .style("display","block")
                    	
                    .style("opacity", .9);
             
                div.html("測站: <br/>"+d.SiteName+"<br/>"+"PM2.5: "+d.s_d0 + "<br/>")
                    .style("left", (d3.event.pageX) + "px")
                    .style("top", (d3.event.pageY - 28) + "px");

            })
            .on("mouseout", function (d) {
                d3.select(this).attr("r", 8).style("fill", function (d) {
                    var set_color = d.s_d0
                    if (set_color < 15 && set_color >= 0) { return "#00FF00" }
                    else if (set_color < 35 && set_color >= 15) { return "#FFFF00" }
                    else if (set_color < 54 && set_color >= 35) { return "#FF7F00" }
                    else if (set_color < 150 && set_color >= 54) { return "#FF0000" }
                    else if (set_color < 250 && set_color >= 150) { return "#9932CC" }
                    else if (set_color >= 251) { return "#8B0A50" }
                });
                div.transition()
                    .duration(500)
                    .style("opacity", 0);
            }
            )</script>
Luis-Chen iT邦新手 4 級 ‧ 2020-05-19 19:21:27 檢舉
調整 z-index
lingwu iT邦新手 5 級 ‧ 2020-05-19 19:41:19 檢舉
我試試看

尚未有邦友回答

立即登入回答