Карты данных - как показать значение в пузыре

Я пытаюсь вставить карту Португалии с помощью Datamaps, и мне нужно указать значение в пузыре, но я не могу.

Я хочу поместить значение в значение и всегда отображается не только при наведении. Я хочу значение внутри круга.

Может быть, я должен вернуть HTML для пузыря, но как? Я ищу об этом, но я не вижу ничего общего с.

var map = new Datamap({
          element: document.getElementById('container'),
          geographyConfig: {
            defaultFill: '#FFFFFF',
            borderColor: '#34BFC2',
            highlightFillColor: '#34BFC2',
            highlightBorderColor: '#34BFC2',
            highlightBorderWidth: 3,
            dataJson: '/js/prt.json'
          },
          fills: {
                'MAJOR': '#2F323A',
                'MEDIUM': '#0fa0fa',
                'MINOR': '#bada55',
                defaultFill: '#FFFFFF'
            },
            bubblesConfig: {
                borderWidth: 2,
                borderColor: '#2F323A',
                popupOnHover: false,
                radius: null,
                popupTemplate: function(geography, data) {
                  return '<div class="hoverinfo"><strong>' + data.name + '</strong></div>';
                },
                fillOpacity: 1,
                animate: true,
                highlightOnHover: true,
                highlightFillColor: '#2F323A',
                highlightBorderColor: '#2F323A',
                defaultFill: '#2F323A',
                highlightBorderWidth: 3,
                highlightFillOpacity: 1,
                exitDelay: 100,
                key: JSON.stringify
            },
          scope: 'prt',
          setProjection: function(element, options) {
                          var projection, path;
                          projection = d3.geo.mercator()
                              .center([-8.00, 39.50])
                              .scale(4000)
                              .translate([element.offsetWidth / 2, element.offsetHeight / 2]);
                            path = d3.geo.path().projection( projection );
                            return {path: path, projection: projection};
                          }
        });
        let bubbles = [
          {
            fillKey: "MAJOR",
            latitude: 40.6738,
            longitude: -8.4394,
            radius: 12,
            value: 10,
            state: 'Aveiro'
          },
          {
            fillKey: "MAJOR",
            latitude: 41.2118,
            longitude: -8.33114,
            radius: 12,
            value: 30,
            state: 'Porto'
          }
        ]
        setTimeout(() => { // only start drawing bubbles on the map when map has rendered completely.
            map.bubbles(bubbles, {
                popupTemplate: function (geo, data) {
                    return `<div class="hoverinfo">city: ${data.state}, Valor: ${data.value}</div>`;
                }
            });
        }, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
  <head>
    <script src="https://d3js.org/d3.v3.js"></script>
    <script src="https://d3js.org/topojson.v1.js"></script>
    <script src="https://rawgithub.com/markmarkoh/datamaps/master/dist/datamaps.none.min.js"></script>
    <script src="https://rawgithub.com/markmarkoh/datamaps/master/dist/datamaps.prt.js"></script>
    <!--<script src="https://rawgithub.com/markmarkoh/datamaps/master/dist/datamaps.all.min.js"></script>-->
  </head>
  <body>
    <div id="container" style="position: relative; width: 300px; height: 600px;"></div>
    <script>
        var map = new Datamap({
          element: document.getElementById('container'),
          geographyConfig: {
            defaultFill: '#FFFFFF',
            borderColor: '#DD1C77',
            highlightFillColor: '#DD1C77',
            highlightBorderColor: '#DD1C77',
            highlightBorderWidth: 3,
            dataJson: '/js/prt.json'
          },
          fills: {
                'MAJOR': '#DD1C77',
                'MEDIUM': '#0fa0fa',
                'MINOR': '#bada55',
                defaultFill: '#FFFFFF'
            },
            bubblesConfig: {
                borderWidth: 2,
                borderColor: '#DD1C77',
                popupOnHover: false,
                radius: null,
                popupTemplate: function(geography, data) {
                  return '<div class="hoverinfo"><strong>' + data.name + '</strong></div>';
                },
                fillOpacity: 1,
                animate: true,
                highlightOnHover: true,
                highlightFillColor: '#DD1C77',
                highlightBorderColor: '#DD1C77',
                defaultFill: '#DD1C77',
                highlightBorderWidth: 3,
                highlightFillOpacity: 1,
                exitDelay: 100,
                key: JSON.stringify
            },
          scope: 'prt',
          setProjection: function(element, options) {
                          var projection, path;
                          projection = d3.geo.mercator()
                              .center([-8.00, 39.50])
                              .scale(4000)
                              .translate([element.offsetWidth / 2, element.offsetHeight / 2]);
                            path = d3.geo.path().projection( projection );
                            return {path: path, projection: projection};
                          }
        });
        let bubbles = [
          {
            fillKey: "MAJOR",
            latitude: 40.6738,
            longitude: -8.4394,
            radius: 12,
            value: 10,
            state: 'Aveiro'
          },
          {
            fillKey: "MAJOR",
            latitude: 41.2118,
            longitude: -8.33114,
            radius: 12,
            value: 30,
            state: 'Porto'
          }
        ]
        setTimeout(() => { // only start drawing bubbles on the map when map has rendered completely.
            map.bubbles(bubbles, {
                popupTemplate: function (geo, data) {
                    return `<div class="hoverinfo">city: ${data.state}, Valor: ${data.value}</div>`;
                }
            });
        }, 1000);
    </script>
  </body>
</html>

Как я могу это сделать?

Спасибо

0 ответов

Другие вопросы по тегам