【发布时间】:2020-06-30 01:31:47
【问题描述】:
我目前正在编写一个脚本,供用户在地图上为旅行 webapp 选择一个地方,我也是新手,对 javascript 没有工作知识,我正在 python -flask 上开发 webapp,并且由于地图适用于 JS 我目前卡住了。
我需要的是,在用户在地图上选择一个国家后,他们应该在该选定的国家/地区放置一个标记,我查看了 jvectormap 网页上标记的示例并正在解决这个问题,但该示例允许几个标记,而我只需要放置一个标记,在选择国家后,现在我可以选择国家,但是当您单击该国家时,会放置一个标记,所以我宁愿需要允许标记区域已被选中,有 onRegionSelected 属性,但我无法弄清楚如何为该功能使用 isSelected 属性,因此非常感谢您的帮助。
此外,完成此操作后,我需要将此标记的坐标传递到数据库中的表单,所以如果可能的话,你能帮我解决这个问题吗?我正在使用 wtforms 但我不知道如何从 javascript 访问变量,我需要标记中的值通过表单将它们存储在数据库中,
提前谢谢你!
代码:
<div id="world-map" style="width: 800px; height: 600px"></div>
<script>
$(function(){
var map,
markerIndex = 0,
markersCoords = {};
map = new jvm.Map({
map: 'world_mill',
markerStyle: {
initial: {
fill: 'red'
}
},
hoverColor: '#FCEF06',
hover: {
stroke: 'black',
"stroke-width": 2,
fill:'#FCEF06'
},
regionsSelectable: true,
regionsSelectableOne: true,
regionStyle: {
fill:'black',
selected: {
fill: 'red'
}
},
container: $('#world-map'),
onMarkerTipShow: function(e, label, code){
map.tip.text(markersCoords[code].lat.toFixed(2)+', '+markersCoords[code].lng.toFixed(2));
},
onMarkerClick: function(e, code){
map.removeMarkers([code]);
map.tip.hide();
}
});
map.container.click(function(e){
var latLng = map.pointToLatLng(
e.pageX - map.container.offset().left,
e.pageY - map.container.offset().top
),
targetCls = $(e.target).attr('class');
if (latLng && (!targetCls || (targetCls && $(e.target).attr('class').indexOf('jvectormap-marker') === -1))) {
markersCoords[markerIndex] = latLng;
map.addMarker(markerIndex, {latLng: [latLng.lat, latLng.lng]});
markerIndex += 1;
}
});
});
</script>
【问题讨论】:
标签: jvectormap