- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 amcharts amMap 中,当选择一个区域时,它会改变其颜色。但当选择多个区域时,每次都是相同的颜色。如何使其每次选择都有不同的颜色,并且一个区域的颜色应该与相邻区域不同。 JsFiddle
var map = AmCharts.makeChart("chartdiv", {
"type": "map",
"theme": "black",
"panEventsEnabled": true,
"backgroundColor": "#00aeff",
"backgroundAlpha": 1,
"dataProvider": {
"map": "indiaLow",
"getAreasFromMap": true,
"images": [{
"id": "backButton",
"label": "Back to continents map",
"rollOverColor": "#ffffff",
"labelRollOverColor": "#ffffff",
"useTargetsZoomValues": true,
"right": 100,
"top": 30,
"labelFontSize": 10,
"selectable": true,
"imageURL": "http://simplemaps.com/static/svg/in/in.svg",
"width": 32,
"height": 32,
"label": "District Level Map"
}]
},
"areasSettings": {
"autoZoom": false,
"color": "#CDCDCD",
"colorSolid": "#5EB7DE",
"selectedColor": "#5EB7DE",
"selectedColor": getRandomColor(),
"outlineColor": "#666666",
"rollOverColor": "#ffffff",
"rollOverOutlineColor": "#FFFFFF",
"selectable": true
},
"listeners": [{
"event": "clickMapObject",
"method": function(event) {
//I tried this but not working. I think map is not taking the new areasettinng values.
map.areasSettings = {selectedColor : ""};
map.areasSettings = {selectedColor : getRandomColor()};
map.selectedObject = map.dataProvider;
event.mapObject.showAsSelected = !event.mapObject.showAsSelected;
map.returnInitialColor(event.mapObject);
var states = [];
for (var i in map.dataProvider.areas) {
var area = map.dataProvider.areas[i];
if (area.showAsSelected) {
states.push(area.title);
}
}
}
}],
"export": {
"enabled": false
}
});
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
#chartdiv {
width: 100%;
height: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.amcharts.com/lib/3/ammap.js"></script>
<script src="https://www.amcharts.com/lib/3/maps/js/indiaLow.js"></script>
<script src="https://www.amcharts.com/lib/3/plugins/export/export.min.js"></script>
<link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
<script src="https://www.amcharts.com/lib/3/themes/black.js"></script>
<div id="chartdiv"></div>
选择一个区域会给该区域一些颜色,然后选择另一个区域,然后应该给它另一种颜色。如何实现这个目标?
最佳答案
您必须将新的单独颜色分配给区域本身,然后调用 validateNow
或 validateData
来根据更改重新绘制 map 。在 AreaSettings 中设置它可能会更改所有区域的颜色(不过,在您的情况下,它不会执行任何操作,因为您没有调用 validateNow/Data)。这是更新后的 clickMapObject 事件:
"listeners": [{
"event": "clickMapObject",
"method": function(event) {
map.selectedObject = map.dataProvider;
event.mapObject.showAsSelected = !event.mapObject.showAsSelected;
map.returnInitialColor(event.mapObject);
var states = [];
for (var i in map.dataProvider.areas) {
var area = map.dataProvider.areas[i];
if (area.showAsSelected) {
//set a new color only if it wasn't assigned before
area.selectedColor = area.selectedColor || getRandomColor();
states.push(area.title);
}
}
// set same zoom levels to retain map position/zoom in case a selection was made after a zoom
map.dataProvider.zoomLevel = map.zoomLevel();
map.dataProvider.zoomLatitude = map.dataProvider.zoomLatitude = map.zoomLatitude();
map.dataProvider.zoomLongitude = map.dataProvider.zoomLongitude = map.zoomLongitude();
map.validateNow(); //redraw the map with the new selection/colors.
}
}],
下面的演示:
var map = AmCharts.makeChart("chartdiv", {
"type": "map",
"theme": "black",
"panEventsEnabled": true,
"backgroundColor": "#00aeff",
"backgroundAlpha": 1,
"dataProvider": {
"map": "indiaLow",
"getAreasFromMap": true,
"images": [{
"id": "backButton",
"label": "Back to continents map",
"rollOverColor": "#ffffff",
"labelRollOverColor": "#ffffff",
"useTargetsZoomValues": true,
"right": 100,
"top": 30,
"labelFontSize": 10,
"selectable": true,
"imageURL": "http://simplemaps.com/static/svg/in/in.svg",
"width": 32,
"height": 32,
"label": "District Level Map"
}]
},
"areasSettings": {
"autoZoom": false,
"color": "#CDCDCD",
"colorSolid": "#5EB7DE",
"selectedColor": "#5EB7DE",
"selectedColor": getRandomColor(),
"outlineColor": "#666666",
"rollOverColor": "#ffffff",
"rollOverOutlineColor": "#FFFFFF",
"selectable": true
},
"listeners": [{
"event": "clickMapObject",
"method": function(event) {
map.selectedObject = map.dataProvider;
event.mapObject.showAsSelected = !event.mapObject.showAsSelected;
map.returnInitialColor(event.mapObject);
var states = [];
for (var i in map.dataProvider.areas) {
var area = map.dataProvider.areas[i];
if (area.showAsSelected) {
//set a new color only if it wasn't assigned before
area.selectedColor = area.selectedColor || getRandomColor();
states.push(area.title);
}
}
// set same zoom levels to retain map position/zoom in case a selection was made after a zoom
map.dataProvider.zoomLevel = map.zoomLevel();
map.dataProvider.zoomLatitude = map.dataProvider.zoomLatitude = map.zoomLatitude();
map.dataProvider.zoomLongitude = map.dataProvider.zoomLongitude = map.zoomLongitude();
map.validateNow(); //redraw the map with the new selection/colors.
}
}],
"export": {
"enabled": false
}
});
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
#chartdiv {
width: 100%;
height: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.amcharts.com/lib/3/ammap.js"></script>
<script src="https://www.amcharts.com/lib/3/maps/js/indiaLow.js"></script>
<script src="https://www.amcharts.com/lib/3/plugins/export/export.min.js"></script>
<link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
<script src="https://www.amcharts.com/lib/3/themes/black.js"></script>
<div id="chartdiv"></div>
关于javascript - 将 amMap 中选定区域的颜色更改为与相邻区域不同的颜色,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623243/
我尝试使用 amMaps 库来创建 map 。这是我的代码: var map = am4core.create("chardiv",
我正在尝试从 amMap 中删除所有控件。我已成功删除缩放控件。是否也可以删除主页按钮,我在任何地方都找不到? "zoomControl": { "zoomControlEnabled": fal
我正在使用 ammaps 创建 map 并尝试创建图例。我遇到了一个奇怪的问题,图例没有出现在初始加载时,但只出现在窗口调整大小时。无论窗口大小如何,在任何调整大小时,图例都会变得可见(非常奇怪吧?)
我收到了以下要求。需要绘制加拿大特定主要城市的天气 我可以通过(网络处理程序和查询字符串)从互联网上的 API 获取当前天气详细信息。因此,我有方便的纬度和经度详细信息以及天气状况(阴天、晴天、雨天等
AmMaps 具有很酷且简单的功能,可以为区域创建热图: https://www.amcharts.com/demos/us-heat-map/ 是否也可以将它用于点(图像) - 根据值、颜色步骤等计
在 amcharts amMap 中,当选择一个区域时,它会改变其颜色。但当选择多个区域时,每次都是相同的颜色。如何使其每次选择都有不同的颜色,并且一个区域的颜色应该与相邻区域不同。 JsFiddle
我已经创建了 amMap 来绘制区域,我想禁用工具提示并在特定状态下单击时添加信息窗口。我怎样才能做到这一点。 最佳答案 如果您想禁用工具提示,请在 areasSettings 中将 balloonT
我想在 ammap 中添加一个圆形标记 map 。标记应以柏林为中心,其纬度为 52.523407,经度为 13.4114(您可以验证这些坐标 here )。 这是尝试这样做的页面的源代码。 jsFi
我正在通过 amCharts 创建 amMap http://docs.amcharts.com/3/javascriptmaps/AmMap它带有自己的主页按钮,您可以单击该按钮并恢复为 map 默
我们如何在 am-charts/am-Maps 中使用 JavaScript 中文本框的值?当我尝试接受 textBox 中的值并在 javaScript 中使用它们时遇到问题。 最佳答案 当您的图表
当我点击一个状态时,我无法让 AmMaps 执行一个函数。 Here's my code.这条线没有像我预期的那样运行: map.addListener("clickMapObject", funct
使用 Ammaps,如何更改 map 加载时的默认缩放和中心坐标?我正在使用世界地图,但不幸的是我无法让它开始放大特定点。 谢谢! 最佳答案 您可以在 dataProvider 中定义 zoomLev
我正在使用 ammap 的最新 javascript 版本,我正在尝试在加载页面时加载正确的国家/地区。我知道您可以通过简单地加载正确的国家/地区 js 文件来加载正确的国家/地区 然后正确设置da
如何在显示我的 AmMap 时删除平移和缩放控件?创建 map 对象时是否可以更改某个字段,或者我是否必须手动更改库代码? 最佳答案 您可以在创建 map 时使用 zoomControl 字段禁用平移
我正在更新 AmMap map 的 map 区域,但每次更新缩放级别和位置时都会重置。 我正在更新 map 的功能是: function setData(data) { var parsedD
我在不同时间从美国不同城市检索信号,想用线路连接所有这些信号,但是,我没有得到信号的确切坐标。是否可以使用 AmCharts.AmMaps 将坐标替换为州? 最佳答案 不,线条需要 AmMaps 中的
我正在使用我修改过的一个使用 ammaps 库的小脚本。我使用世界地图,如果我点击某些国家/地区,它将加载该国家/地区的 map ,包括各州。 现在,在我打开一个国家并单击一个州后,我正在努力寻找解决
有 AmChart 的带有图像的 amMap,即 imageSeries。目标是更改点击的图像或说验证 imageSeries 而不会丢失缩放级别。在开发模式下,图像已使用 imageURL 更改,但
我正在使用 usaLow.js map 构建 map 。在 map init 上,我调用了一个返回此数据的 json 方法: [{latitude: "40.4258686",longitude: "
我正在使用 ReactJs 和 AmCharts 库创建美国 map 。我想要的正是这样的:https://www.amcharts.com/demos/us-heat-map/ 。当您在 fiddl
我是一名优秀的程序员,十分优秀!