【发布时间】:2015-01-21 09:19:03
【问题描述】:
我有一张来自 jvectormap http://jvectormap.com/maps/countries/united-kingdom/ 的地图,它以 SVG 的“路径”显示国家/地区。
我还有一组带有经纬度坐标的对象。
是否可以根据坐标和 SVG 路径将每个对象分配给特定区域?
【问题讨论】:
标签: ruby-on-rails ruby jvectormap
我有一张来自 jvectormap http://jvectormap.com/maps/countries/united-kingdom/ 的地图,它以 SVG 的“路径”显示国家/地区。
我还有一组带有经纬度坐标的对象。
是否可以根据坐标和 SVG 路径将每个对象分配给特定区域?
【问题讨论】:
标签: ruby-on-rails ruby jvectormap
我找到了一种方法,但它真的很老套,我相信还有更好的方法。
无论如何,这是我解决问题的方法:
jvm.Map.prototype.latLngToRegion = function (lat, lng) {
var pointOnMap = this.latLngToPoint(lat, lng),
pointOnPage = {
x: Math.round((pointOnMap.x + this.container.offset().left) - $(window).scrollLeft()),
y: Math.round((pointOnMap.y + this.container.offset().top) - $(window).scrollTop())
},
element = document.elementFromPoint(pointOnPage.x, pointOnPage.y),
region = $(element).attr('data-code');
return region; // note, this will only give you the region code, but from that you can read out most of what you need from jvectormaps itself.
}
需要注意的是,您要查找的纬度和经度必须在视图中,以便 document.elementFromPoint 起作用。但你也许可以更新滚动和地图平移等列表。
【讨论】:
好吧,也许您可以看看 jvectormap 如何将您当前的鼠标位置与该区域匹配 - 您应该能够以类似的方式匹配您的 lat/lng 坐标
【讨论】: