我需要提供一个 Web 界面,用户可以在其中在地图上选择国家。这相当于复选框或多选,只是以视觉方式呈现。
我看到两种方法来解决这个问题,但我不确定从哪里开始:
- 要么构建表单元素,隐藏它们,然后将它们绑定到地图
- 或从交互式地图开始,并将点击的国家/地区存储在文本字段中
是否有任何示例或插件显示如何实现这一目标?具体要求是能够选择多个国家,而不仅仅是一个。
我需要提供一个 Web 界面,用户可以在其中在地图上选择国家。这相当于复选框或多选,只是以视觉方式呈现。
我看到两种方法来解决这个问题,但我不确定从哪里开始:
是否有任何示例或插件显示如何实现这一目标?具体要求是能够选择多个国家,而不仅仅是一个。
您可以使用Google 的数据可视化 Geocharts相当轻松地做到这一点。只需初始化您的 Geochart。您需要传入 aDataTable
以绘制图表,因此只需传入一个DataTable
没有任何行数据的空。
var data = google.visualization.arrayToDataTable([
['Countries']
]);
var options = {
//set any options you want to the chart
};
var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
chart.draw(data, options);
然后使用该事件侦听区域上的单击事件'regionClick'
,您可以将其附加到列表或根据需要处理选定的区域数据。但这应该为通过图形地图选择国家/地区提供一个很好的起点。
google.visualization.events.addListener(chart, 'regionClick', function(e) {
//e.region gives you country code of selected country
});
不确定是否有人仍在寻找如何执行此操作,但我在尝试从表格中完成多个国家/地区选择时发现了这个线程。基本上,有几个关于如何设置其他所有内容的现有方法,但我的代码最终不同的地方在于表选择处理程序。我为表的每一行设置了一个 switch 语句,并为图表创建了第二个 (data2) 变量以供使用:
var selection = table.getSelection();
switch(selection[0].row) {
case 0:
var data2 = google.visualization.arrayToDataTable([['Countries'], ['Argentina'],['Austraila'], ['Canada'], ['China'], ['India'], ['Japan'], ['New Zealand'], ['United Kingdom'], ['South Korea'], ['Saudi Arabia'], ['Singapore'], ['Taiwan'], ['United States']]);
Geochart.draw(data2, options);
break;
case 1:
var data2 = google.visualization.arrayToDataTable([['Countries'], ['United States'], ['France'], ['Germany']]);
Geochart.draw(data2, options);
break;
case 2:
var data2 = google.visualization.arrayToDataTable([['Countries'], ['Sweden'], ['Russia'], ['Brazil']]);
Geochart.draw(data2, options);
break;
case 3:
var data2 = google.visualization.arrayToDataTable([['Countries'], ['Mexico'], ['Chile'], ['Iceland']]);
Geochart.draw(data2, options);
break;
case 4:
var data2 = google.visualization.arrayToDataTable([['Countries'], ['Portugal'], ['Yemen'], ['Egypt']]);
Geochart.draw(data2, options);
break;
case 5:
var data2 = google.visualization.arrayToDataTable([['Countries'], ['Finland'], ['Belgium'], ['Ireland']]);
Geochart.draw(data2, options);
break;
default:
alert('Row selection error!');
}
});