当鼠标悬停在不同颜色上时,传单突出显示标记

卢卡斯

当我将鼠标悬停在标记上时,我正在尝试设置标记突出显示。我的标记会根据用户是否处于活动状态进行着色。如果它们是活性的,则标记物进一步区分雄性和雌性。

我的HTML文件如下所示:

<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml">

<head profile="http://gmpg.org/xfn/11">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  <!--The CSS files-->
  <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css"/>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" type="text/css">

  <!--The dependent .js files-->
  <script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <script type="text/javascript" src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
</head>

<body>
    <title>Circle Highlight</title>
    <style> html, body {
        height: 100%;
        margin: 0;
        padding: 0;
    }

    #map {
      height: 100%;
    }
    </style>
</body> 

<div id="map"></div>
<script type='text/javascript' src='C:\Users\Lukasz Obara\OneDrive\Programing\HTML\Slider\circles.geojson'></script>
<script type='text/javascript' src='C:\Users\Lukasz Obara\OneDrive\Programing\HTML\Slider\leaflet_demo_circles.js'></script>

我的circle.geojson文件:

var circles= {
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.1966, 31.7825]
        },
        "properties": {
            "GPSId": "2",
            "DateStart": "2015-06-23",
            "DateClosed": "2016-01-23",
            "GPSUserName": "fake2",
            "GPSUserColor": "#FF5500",
            "Gender": "Male",
            "Active": 1
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.2, 31.780117]
        },
        "properties": {
            "GPSId": "6",
            "DateStart": "2015-06-23",
            "DateClosed": "2016-01-23",
            "GPSUserName": "fake1",
            "GPSUserColor": "#00FF57",
            "Gender": "Female",
            "Active": 0
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.201715, 31.779548]
        },
        "properties": {
            "GPSId": "15",
            "DateStart": "2015-02-21",
            "DateClosed": "2016-02-28",
            "GPSUserName": "fake10",
            "GPSUserColor": "#00FF57",
            "Gender": "Male",
            "Active": 1
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.200987, 31.779606]
        },
        "properties": {
            "GPSId": "16",
            "DateStart": "2015-01-01",
            "DateClosed": "2016-01-01",
            "GPSUserName": "fake11",
            "GPSUserColor": "#00FF57",
            "Gender": "Female",
            "Active": 0
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.200987, 31.780522]
        },
        "properties": {
            "GPSId": "17",
            "DateStart": "2015-02-04",
            "DateClosed": "2016-09-21",
            "GPSUserName": "fake12",
            "GPSUserColor": "#00FF57",
            "Gender": "Male",
            "Active": 1
        }
    }]
};

和我的javascriptleaflet_demo_circles.js文件

var map = L.map( 'map', {
center: [31.780117, 35.2],
zoom: 17,
minZoom: 2,
maxZoom: 20
});

L.tileLayer('http://{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright" title="OpenStreetMap" target="_blank">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" title="MapQuest" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png" width="16" height="16">',
    subdomains: ['otile1','otile2','otile3','otile4']
}).addTo(map);

// This will produce a static black circle
var circle2 = L.circle([31.7805, 35.203], 8, {
    color: "#000000",
    stroke: true,
    fillColor: "#000000",
    weight: 2,
    fillOpacity: 0.7
}).addTo(map);

///////////////////////////////////////////////////////////////////////////
//Aesthetics                                                             //
///////////////////////////////////////////////////////////////////////////

//define styles for circle markers
var blueMarker ={
    radius: 8,
    stroke: true,
    color: "#0000FF",
    weight: 2,
    opacity: 1,
    fill: true,
//  fillColor: "#FF0000",
    fillOpacity: 0.5
}

var pinkMarker ={
    radius: 8,
    stroke: true,
    color: "#FF99FF",
    weight: 2,
    opacity: 1,
    fill: true,
//  fillColor: "#FF0000",
    fillOpacity: 0.5
}

var greyMarker = {
    radius: 8,
    stroke: true,
    color: "#808080",
    weight: 2,
    opacity: 1,
    fill: true,
//  fillColor: "#FF0000",
    fillOpacity: 0.5
};

// Highlighted circles ///////////////////
var blueMarkerHighlighted ={
    radius: 10,
    stroke: true,
    color: "#0000FF",
    weight: 2,
    opacity: 1,
    fill: true,
//  fillColor: "#FF0000",
    fillOpacity: 0.75
}

var pinkMarkerHighlighted ={
    radius: 10,
    stroke: true,
    color: "#FF99FF",
    weight: 2,
    opacity: 1,
    fill: true,
//  fillColor: "#FF0000",
    fillOpacity: 0.75
}

var greyMarkerHighlighted = {
    radius: 10,
    stroke: true,
    color: "#808080",
    weight: 2,
    opacity: 1,
    fill: true,
//  fillColor: "#FF0000",
    fillOpacity: 0.75
};

///////////////////////////////////////////////////////////////////////////
//functions to attach styles and popups to the marker layer              //
///////////////////////////////////////////////////////////////////////////

//Assigns colors based on activity and gender
function colors (feature, layer) {
    if (feature.properties.Active === 1) {
        if (feature.properties.Gender === "Male") {
            return L.circleMarker(layer, blueMarker);
        } else {
            return L.circleMarker(layer, pinkMarker);
       }
    } else {
        return L.circleMarker(layer, greyMarker);
    }
};

function popup (feature, layer) {
    layer.bindPopup("<h1>" + feature.properties.GPSUserName + "</h1>");
};

///////////////////////////////////////////////////////////////////////////
//displaying the data on the map                                         //
///////////////////////////////////////////////////////////////////////////

dotlayer = L.geoJson(circles, {
    pointToLayer: colors,
    onEachFeature: popup
}).addTo(map);

我尝试将以下两个功能替换为以下内容,以分配颜色并在鼠标悬停时起作用,但没有成功。

function dotStyleDefault() {
    if (feature.properties.Active === 1) {
        if (feature.properties.Gender === "Male") {
            return blueMarker;
        } else {
            return pinkMarker;
       }
    } else {
        return greyMarker;
    }
};

function dotStyleHighlight(){
    if (feature.properties.Active === 1) {
        if (feature.properties.Gender === "Male") {
            return blueMarkerHighlighted;
        } else {
            return pinkMarkerHighlighted;
       }
    } else {
        return greyMarkerHighlighted;
    }
}

function highlightDot(e) {
    var layer = e.target;
    layer.setStyle(dotStyleHighlight);
};

function resetDotHighlight(e) {
    var layer = e.target;
    layer.setStyle(dotStyleDefault);
};

function onEachDot(feature, layer) {
    layer.on({
        mouseover: highlightDot,
        mouseout: resetDotHighlight
    });
    layer.bindPopup('<table style="width:150px"><tbody><tr><td><div><b>name:</b></div></td><td><div>' + feature.properties.GPSId + '</div></td></tr><tr class><td><div><b>year:</b></div></td><td><div>' + feature.properties.DateStart + '</div></td></tr></tbody></table>');
};

///////////////////////////////////////////////////////////////////////////
//displaying the data on the map                                         //
///////////////////////////////////////////////////////////////////////////

dotlayer = L.geoJson(circles, {
    pointToLayer: function (feature, latlng) {
        return L.circleMarker(latlng, dotStyleDefault);
    },
    onEachFeature: onEachDot
}).addTo(map);
卢卡斯

我发现的一个解决方案是修改geojson文件以包含Colour属性。因此circles.geojson将类似于

var circles = {
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.1966, 31.7825]
        },
        "properties": {
            "GPSId": "2",
            "DateStart": "2015-06-23",
            "DateClosed": "2016-01-23",
            "GPSUserName": "2",
            "GPSUserColor": "#FF5500",
            "Gender": "Male",
            "Active": 1,
            "Colour": "#0000FF" //THIS IS ADDED BASED ON ACTIVITY LEVEL AND GENDER
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.2, 31.780117]
        },
        "properties": {
            "GPSId": "6",
            "DateStart": "2015-06-23",
            "DateClosed": "2016-01-23",
            "GPSUserName": "fake1",
            "GPSUserColor": "#00FF57",
            "Gender": "Female",
            "Active": 0,
            "Colour": "#808080" //THIS IS ADDED BASED ON ACTIVITY LEVEL AND GENDER
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.201715, 31.779548]
        },
        "properties": {
            "GPSId": "15",
            "DateStart": "2015-02-21",
            "DateClosed": "2016-02-28",
            "GPSUserName": "fake10",
            "GPSUserColor": "#00FF57",
            "Gender": "Male",
            "Active": 1,
            "Colour": "#0000FF" //THIS IS ADDED BASED ON ACTIVITY LEVEL AND GENDER
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.200987, 31.779606]
        },
        "properties": {
            "GPSId": "16",
            "DateStart": "2015-01-01",
            "DateClosed": "2016-01-01",
            "GPSUserName": "fake11",
            "GPSUserColor": "#00FF57",
            "Gender": "Female",
            "Active": 0,
            "Colour": "#808080" //THIS IS ADDED BASED ON ACTIVITY LEVEL AND GENDER
        }
    }, {
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [35.200987, 31.780522]
        },
        "properties": {
            "GPSId": "17",
            "DateStart": "2015-02-04",
            "DateClosed": "2016-09-21",
            "GPSUserName": "fake12",
            "GPSUserColor": "#00FF57",
            "Gender": "Male",
            "Active": 1,
            "Colour": "#0000FF" //THIS IS ADDED BASED ON ACTIVITY LEVEL AND GENDER
        }
    }

那么我可以省略中的条件语句circles.js,这将导致:

var map = L.map( 'map', {
    center: [31.780117, 35.2],
    zoom: 17,
    minZoom: 2,
    maxZoom: 20
});

L.tileLayer('http://{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright" title="OpenStreetMap" target="_blank">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" title="MapQuest" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png" width="16" height="16">',
    subdomains: ['otile1','otile2','otile3','otile4']
}).addTo(map);

// This will produce a static black circle
var circle2 = L.circle([31.7805, 35.203], 8, {
    color: "#000000",
    stroke: true,
    fillColor: "#000000",
    weight: 2,
    fillOpacity: 0.7
}).addTo(map);

///////////////////////////////////////////////////////////////////////////////
//Aesthetics                                                                 //
///////////////////////////////////////////////////////////////////////////////

var markerDefault = {
    radius: 8,
    weight: 2,
    opacity: 1,
    fillOpacity: 0.5
};

var markerHighlight = {
    radius: 10,
    weight: 3,
    opacity: 1,
    fillOpacity: 0.75
};

///////////////////////////////////////////////////////////////////////////////
//functions to attach styles and popups to the marker layer                  //
///////////////////////////////////////////////////////////////////////////////

function highlightDot(e) {
    var layer = e.target;
    layer.setStyle(markerHighlight);
};

function resetDotHighlight(e) {
    var layer = e.target;
    layer.setStyle(markerDefault);
};

function onEachDot(feature, layer) {
    layer.on({
        mouseover: highlightDot,
        mouseout: resetDotHighlight
    });
    layer.bindPopup('<table style="width:150px"><tbody><tr><td><div><b>name:</b></div></td><td><div>' + feature.properties.GPSId + '</div></td></tr><tr class><td><div><b>year:</b></div></td><td><div>' + feature.properties.DateStart + '</div></td></tr></tbody></table>');
};

///////////////////////////////////////////////////////////////////////////
//displaying the data on the map                                         //
///////////////////////////////////////////////////////////////////////////

dotlayer = L.geoJson(circles, {
    style: function(feature) {
        return {color: feature.properties.Colour};
    },
    pointToLayer: function(feature, latlng) {
        return new L.CircleMarker(latlng, markerDefault);
    },
    onEachFeature: onEachDot
}).addTo(map);

// init a map scale
L.control.scale().addTo(map);

在不修改.geojson文件的情况下找到解决方案仍然很不错

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当鼠标悬停在Emacs / gdb中时显示变量的值?

来自分类Dev

是否可以创建一个工具提示,当鼠标悬停在<p>标记内的文本上时出现?

来自分类Dev

将鼠标悬停在项目上时突出显示列表框项目

来自分类Dev

当鼠标悬停在按钮上时,下拉菜单不显示

来自分类Dev

使用jQuery将鼠标悬停在列表元素上时显示突出显示效果

来自分类Dev

将鼠标悬停在XAML WPF上时,将按钮默认的突出显示颜色更改为透明颜色?

来自分类Dev

将鼠标悬停在Listiview项上时不突出显示-UWP(Windows 10)

来自分类Dev

当鼠标悬停在Jssor中的缩略图菜单上时显示字幕

来自分类Dev

当鼠标悬停在悬停元素上时,如何设置悬停效果继续显示?

来自分类Dev

当鼠标悬停在不同颜色上时,传单突出显示标记

来自分类Dev

当鼠标悬停在圆圈上时,圆圈不会改变颜色

来自分类Dev

当鼠标悬停在其下方的文本上时,如何使标记改变颜色?

来自分类Dev

CSS3,当鼠标悬停在父div上时显示或隐藏子div

来自分类Dev

当鼠标悬停在数据点上时如何显示工具提示

来自分类Dev

仅当鼠标悬停在其上时显示div

来自分类Dev

将鼠标悬停在项目上时突出显示列表框项目

来自分类Dev

当鼠标悬停在输入文本框上时显示一些文本

来自分类Dev

当鼠标悬停在网格上时显示/隐藏网格行

来自分类Dev

将鼠标悬停在图像上时,显示带有半透明颜色覆盖的标题

来自分类Dev

当鼠标悬停在双引号上时,停止Eclipse以显示文档

来自分类Dev

当鼠标悬停在悬停元素上时,如何设置悬停效果继续显示?

来自分类Dev

当鼠标悬停在DIV中时更改H2颜色

来自分类Dev

当鼠标悬停在li:之前时,如何更改链接的颜色?

来自分类Dev

当鼠标悬停在元素上时,我想显示一小段文本,例如“获取信息”

来自分类Dev

当鼠标悬停在 <a> 标签元素中时,如何完全改变图像的颜色?

来自分类Dev

当鼠标悬停在另一个椭圆上时,如何更改椭圆的填充颜色?

来自分类Dev

angular 5 - 当鼠标悬停在产品上时,在 div 中显示产品详细信息

来自分类Dev

VueJS:将鼠标悬停在段落中的单词上时突出显示整个句子

来自分类Dev

将鼠标悬停在 CSS Grid 项目上时如何突出显示整个按钮?

Related 相关文章

  1. 1

    当鼠标悬停在Emacs / gdb中时显示变量的值?

  2. 2

    是否可以创建一个工具提示,当鼠标悬停在<p>标记内的文本上时出现?

  3. 3

    将鼠标悬停在项目上时突出显示列表框项目

  4. 4

    当鼠标悬停在按钮上时,下拉菜单不显示

  5. 5

    使用jQuery将鼠标悬停在列表元素上时显示突出显示效果

  6. 6

    将鼠标悬停在XAML WPF上时,将按钮默认的突出显示颜色更改为透明颜色?

  7. 7

    将鼠标悬停在Listiview项上时不突出显示-UWP(Windows 10)

  8. 8

    当鼠标悬停在Jssor中的缩略图菜单上时显示字幕

  9. 9

    当鼠标悬停在悬停元素上时,如何设置悬停效果继续显示?

  10. 10

    当鼠标悬停在不同颜色上时,传单突出显示标记

  11. 11

    当鼠标悬停在圆圈上时,圆圈不会改变颜色

  12. 12

    当鼠标悬停在其下方的文本上时,如何使标记改变颜色?

  13. 13

    CSS3,当鼠标悬停在父div上时显示或隐藏子div

  14. 14

    当鼠标悬停在数据点上时如何显示工具提示

  15. 15

    仅当鼠标悬停在其上时显示div

  16. 16

    将鼠标悬停在项目上时突出显示列表框项目

  17. 17

    当鼠标悬停在输入文本框上时显示一些文本

  18. 18

    当鼠标悬停在网格上时显示/隐藏网格行

  19. 19

    将鼠标悬停在图像上时,显示带有半透明颜色覆盖的标题

  20. 20

    当鼠标悬停在双引号上时,停止Eclipse以显示文档

  21. 21

    当鼠标悬停在悬停元素上时,如何设置悬停效果继续显示?

  22. 22

    当鼠标悬停在DIV中时更改H2颜色

  23. 23

    当鼠标悬停在li:之前时,如何更改链接的颜色?

  24. 24

    当鼠标悬停在元素上时,我想显示一小段文本,例如“获取信息”

  25. 25

    当鼠标悬停在 <a> 标签元素中时,如何完全改变图像的颜色?

  26. 26

    当鼠标悬停在另一个椭圆上时,如何更改椭圆的填充颜色?

  27. 27

    angular 5 - 当鼠标悬停在产品上时,在 div 中显示产品详细信息

  28. 28

    VueJS:将鼠标悬停在段落中的单词上时突出显示整个句子

  29. 29

    将鼠标悬停在 CSS Grid 项目上时如何突出显示整个按钮?

热门标签

归档