4

我是 qQuery 的新手,并没有在 javascript 中做很多事情。

我有一个包含大约 10 个国家/地区的小型 jVectorMap,我想在每个国家/地区的顶部绘制一个小饼图。

我看到您可以创建标记,但我看不到您将如何将自定义标记分配给一个国家/地区。

我很高兴使用 SVG 插件直接在 jVectorMap 上绘制,但我似乎无法让它工作。

例如,使用“jQuery SVG”插件,我尝试在地图上画一个圆圈。这是代码:

<html>
<head>
  <link rel="stylesheet" href="jquery-jvectormap-1.1.1.css" type="text/css" media="screen"/>
  <link rel="stylesheet" href="jquery.svg.css" type="text/css" media="screen"/>
  <script src="jquery-1.8.0.min.js"></script>
  <script src="jquery-jvectormap-1.1.1.min.js"></script>
  <script src="jquery-jvectormap-north-west-europe.js"></script>
  <script src="jquery.svg.min.js"></script>
  <script>
    function drawCircle(svg) { 
      svg.circle(75, 75, 50, {fill: 'none', stroke: 'red', strokeWidth: 3}); 
    }
  </script>
</head>
<body>
  <div id="europe-map" style="width: 400px; height: 400px"></div>
  <script>
    $(function(){
      $('#europe-map').vectorMap({
        map: 'north-west-europe',
        focusOn: {
        x: 0.3,
        y: 0.4,
        scale: 1.25
    },
      });
    });

    $('#europe-map').svg({onLoad: drawCircle});
  </script>
</body>
</html>

结果如下:

浏览器中显示的内容 (Firefox 17)

实际上,为 jQuery SVG“画布”创建了一个重复的 div,并且世界地图被下推。是否可以引用 jVectorMap 使用的 SVG 绘图空间来绘制内容?

也许有更好的方法来使用自定义标记或类似的东西来做到这一点?

非常感谢,如果这是一个愚蠢的问题,我们深表歉意。

4

3 回答 3

3

您需要使用 CSS 将两层拉到彼此的顶部。创建以下 HTML:

<div id="mapContainer" style="position:relative">
    <div id="europe-map" style="position:absolute;top:0px;left:0px"></div>
    <div id="europe-map-overlay" style="position:absolute;top:0px;left:0px"></div>
</div>

现在,而不是申请

$('#europe-map').svg({onLoad: drawCircle});

采用

$('#europe-map-overlay').svg({onLoad: drawCircle});

反而。

这会将圆圈放在地图的顶部。如果要将圆放在特定的经纬度坐标上,请使用 JvectormaplatLngToPoint()方法进行转换。

于 2013-10-09T04:42:36.827 回答
2

如果您不想使用 svg 标记,请使用新图层(地图中 svg 图层上的 div)

获取地图参考

map = $("#world-map-gdp").vectorMap('get', 'mapObject');

并使用函数 map.latLngToPoint() 来定位新层中的点。

var newMarkerP = map.latLngToPoint(lat,lng);
$('#marker1').css('top',newMarkerP.x);
$('#marker1').css('top',newMarkerP.y); 

如果进行缩放或拖动,您可以重新定位标记,使用相同的功能并应用 css left 和 css top。

也许您可以使用新标记的顶部和左侧,但这是一个简单的解决方案。

于 2013-03-12T13:00:12.087 回答
0

可以使用JVectorMap API,绘制的方法是addCircle。

于 2013-02-15T09:07:35.287 回答