使用json将infoWindow添加到地图标记

安德鲁·托卡(Andrew Tokar)

我有一个简单的脚本,可以在地图上添加标记,数据取自json。我想向所有标记添加一个基本的infoWindow,以便在单击它时显示“ Cartier”。您能告诉我InfoWindow代码在做什么错吗?代码如下。

<!DOCTYPE html>
    <html>
    <head>
    <style>
    html, body, #map-canvas {
      margin: 0;
      padding: 0;
      height: 100%;
    }
    </style>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>

var map;

function initialize() {
  var mapOptions = {
        zoom: 2,
        center: {lat: 37.275, lng: 22.549},
        mapTypeId: google.maps.MapTypeId.TERRAIN
      };

  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  // Create a <script> tag and set the USGS URL as the source.
  var script = document.createElement('script');

  script.src = 'http://pastebin.com/raw.php?i=7X956uB3';
  document.getElementsByTagName('head')[0].appendChild(script);

  map.data.setStyle(function(feature) {
    var jstores = feature.getProperty('jstores');
    return {
      icon: getCircle(jstores),
      title: (jstores)
    };
  });

  var contentString = '<div id="content">Cartier</div>';

  var infowindow = new google.maps.InfoWindow({
        content: contentString
      });

  google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
  });
}

function getCircle(jstores) {
  var circle = {
        path: google.maps.SymbolPath.CIRCLE,
        fillColor: 'red',
        fillOpacity: .2,
        scale: Math.sqrt(jstores) * 2,
        strokeColor: 'white',
        strokeWeight: .5
      };
  return circle;
}

function jewellery_stores(results) {
  map.data.addGeoJson(results);
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
 <body>
   <div id="map-canvas"></div>
 </body>
</html>

样本JSON:

jewellery_stores({ "type": "FeatureCollection","features": [
{"type": "Feature","geometry": {"type": "Point", "coordinates": [139.730407, 35.70883]},"properties": {"jstores": 106 }},
{"type": "Feature","geometry": {"type": "Point", "coordinates": [37.615556, 55.752222]},"properties": {"jstores": 94 }},
{"type": "Feature","geometry": {"type": "Point", "coordinates": [2.3524282, 48.8564528]},"properties": {"jstores": 89 }},
{"type": "Feature","geometry": {"type": "Point", "coordinates": [55.277067, 25.176594]},"properties": {"jstores": 66 }},
{"type": "Feature","geometry": {"type": "Point", "coordinates": [-0.1276597, 51.5072759]},"properties": {"jstores": 64 }},
{"type": "Feature","geometry": {"type": "Point", "coordinates": [114.169551, 22.285261]},"properties": {"jstores": 63 }}]

预先谢谢你,安德烈

地理编码

您正在使用Google Maps Javascript API v3数据层

它支持单击侦听器,该侦听器允许您打开包含JSON中包含的属性的信息窗口。

map.data.addListener('click', function (e) {
    infowindow.setPosition(e.latLng);
    infowindow.setContent("hello world<br>jstores="+e.feature.getProperty("jstores")+"<br>"+e.latLng.toUrlValue(6));
    infowindow.open(map);
});

工作代码段:

var map;
var infowindow = new google.maps.InfoWindow({});

function initialize() {
  var mapOptions = {
    zoom: 2,
    center: {
      lat: 37.275,
      lng: 22.549
    },
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };

  map = new google.maps.Map(document.getElementById('map-canvas'),
    mapOptions);

  // Create a <script> tag and set the USGS URL as the source.
  var script = document.createElement('script');

  script.src = 'https://pastebin.com/raw.php?i=7X956uB3';
  document.getElementsByTagName('head')[0].appendChild(script);

  map.data.setStyle(function(feature) {
    var jstores = feature.getProperty('jstores');
    return {
      icon: getCircle(jstores),
      title: (jstores)
    };
  });
}

function getCircle(jstores) {
  var circle = {
    path: google.maps.SymbolPath.CIRCLE,
    fillColor: 'red',
    fillOpacity: 0.2,
    scale: Math.sqrt(jstores) * 2,
    strokeColor: 'white',
    strokeWeight: 0.5
  };
  return circle;
}

function jewellery_stores(results) {
  map.data.addGeoJson(results);
  map.data.addListener('click', function(e) {
    infowindow.setPosition(e.latLng);
    infowindow.setContent("hello world<br>jstores=" + e.feature.getProperty("jstores") + "<br>" + e.latLng.toUrlValue(6));
    infowindow.open(map);
  });
}

google.maps.event.addDomListener(window, 'load', initialize);
html,
  body,
  #map-canvas {
    margin: 0;
    padding: 0;
    height: 100%;
  }
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map-canvas"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:将数字添加到地图标记

来自分类Dev

将地图标记添加到“打开图层” 6

来自分类Dev

将弹出窗口添加到谷歌地图标记

来自分类Dev

将Infowindow添加到数组标记,每5秒刷新一次Google地图

来自分类Dev

谷歌地图标记未添加到地图

来自分类Dev

使用Knockout.js使用数组方法将地图标记添加到Google Maps

来自分类Dev

自定义图像以添加到地图标记

来自分类Dev

错误:google.maps.number 不是构造函数,当使用 javascript 将旋转属性添加到谷歌地图中的图标或标记时

来自分类Dev

谷歌地图; 将地点卡添加到标记

来自分类Dev

导航地图时将标记添加到Google Map

来自分类Dev

如何使用毕加索将图标添加到标记中?

来自分类Dev

使用for循环将标记聚类器添加到Google地图吗?

来自分类Dev

C ++-使用lambda将地图添加到地图

来自分类Dev

Gson to json将地图动态添加到对象

来自分类Dev

Restfullyii将<link>标记添加到json响应

来自分类Dev

将新行添加到JSON作为标记(传单)

来自分类Dev

在Android的Mapbox地图上添加多个标记,无法将源添加到mapboxMap

来自分类Dev

使用循环将地图元素添加到列表

来自分类Dev

使用JavaScript将数组值添加到地图中?

来自分类Dev

使用地图将元素添加到数组?

来自分类Dev

使用JS将属性添加到<a>标记

来自分类Dev

使用Dom将标记添加到XML文件(最小)

来自分类Dev

如何在此处将动画添加到SVG图标标记中?

来自分类Dev

无法将散点图标记(总计)添加到垂直堆叠的柱形图(组件)中

来自分类Dev

将ID添加到标记后,地图不会对位置进行聚类

来自分类Dev

如何将标记添加到Mapbox的“浅色”地图样式?

来自分类Dev

通过JS API将标记添加到mapbox地图,然后“保存”

来自分类Dev

单击 Angular 2 时将标记添加到谷歌地图

来自分类Dev

谷歌地图 API 将信息窗口添加到点击事件的标记数组

Related 相关文章

  1. 1

    Android:将数字添加到地图标记

  2. 2

    将地图标记添加到“打开图层” 6

  3. 3

    将弹出窗口添加到谷歌地图标记

  4. 4

    将Infowindow添加到数组标记,每5秒刷新一次Google地图

  5. 5

    谷歌地图标记未添加到地图

  6. 6

    使用Knockout.js使用数组方法将地图标记添加到Google Maps

  7. 7

    自定义图像以添加到地图标记

  8. 8

    错误:google.maps.number 不是构造函数,当使用 javascript 将旋转属性添加到谷歌地图中的图标或标记时

  9. 9

    谷歌地图; 将地点卡添加到标记

  10. 10

    导航地图时将标记添加到Google Map

  11. 11

    如何使用毕加索将图标添加到标记中?

  12. 12

    使用for循环将标记聚类器添加到Google地图吗?

  13. 13

    C ++-使用lambda将地图添加到地图

  14. 14

    Gson to json将地图动态添加到对象

  15. 15

    Restfullyii将<link>标记添加到json响应

  16. 16

    将新行添加到JSON作为标记(传单)

  17. 17

    在Android的Mapbox地图上添加多个标记,无法将源添加到mapboxMap

  18. 18

    使用循环将地图元素添加到列表

  19. 19

    使用JavaScript将数组值添加到地图中?

  20. 20

    使用地图将元素添加到数组?

  21. 21

    使用JS将属性添加到<a>标记

  22. 22

    使用Dom将标记添加到XML文件(最小)

  23. 23

    如何在此处将动画添加到SVG图标标记中?

  24. 24

    无法将散点图标记(总计)添加到垂直堆叠的柱形图(组件)中

  25. 25

    将ID添加到标记后,地图不会对位置进行聚类

  26. 26

    如何将标记添加到Mapbox的“浅色”地图样式?

  27. 27

    通过JS API将标记添加到mapbox地图,然后“保存”

  28. 28

    单击 Angular 2 时将标记添加到谷歌地图

  29. 29

    谷歌地图 API 将信息窗口添加到点击事件的标记数组

热门标签

归档