【问题标题】:How can I put icon markers on Google maps, and is there a quota on number of icons?如何在谷歌地图上放置图标标记,图标数量是否有配额?
【发布时间】:2012-06-22 21:02:02
【问题描述】:

我如何在 Google 地图 JavaScript 中说:“我想在这个纬度和经度上放置一个标记,带有动画,并带有这个 30x20 的图标 [带有图标所需的任何信息]?”

我可以拥有多少个不同的图标有任何限制吗?

【问题讨论】:

    标签: javascript geolocation maps geospatial


    【解决方案1】:

    我想你正在寻找这个:Google Maps API - Overlays

    那里有一些非常好的例子......

    通常有一个用于覆盖的图标和一个用于阴影的图标,但您可以覆盖此行为...

    编辑:添加更多内容:

    没有默认阴影。如果您使用自定义图标,则需要为阴影提供图标和图像。我过去使用Custom Marker Generator 来生成阴影图像。

    这是来自 Google 的一些示例代码。注意图像和阴影都被指定了......

    function initialize() {
        var myOptions = {
            zoom: 10,
            center: new google.maps.LatLng(-33.9, 151.2),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);
    
        setMarkers(map, beaches);
    }
    
    /**
     * Data for the markers consisting of a name, a LatLng and a zIndex for
     * the order in which these markers should display on top of each
     * other.
     */
    var beaches = [
      ['Bondi Beach', -33.890542, 151.274856, 4],
      ['Coogee Beach', -33.923036, 151.259052, 5],
      ['Cronulla Beach', -34.028249, 151.157507, 3],
      ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
      ['Maroubra Beach', -33.950198, 151.259302, 1]
    ];
    
    function setMarkers(map, locations) {
      // Add markers to the map
    
      // Marker sizes are expressed as a Size of X,Y
      // where the origin of the image (0,0) is located
      // in the top left of the image.
    
      // Origins, anchor positions and coordinates of the marker
      // increase in the X direction to the right and in
      // the Y direction down.
      var image = new google.maps.MarkerImage('images/beachflag.png',
          // This marker is 20 pixels wide by 32 pixels tall.
          new google.maps.Size(20, 32),
          // The origin for this image is 0,0.
          new google.maps.Point(0,0),
          // The anchor for this image is the base of the flagpole at 0,32.
          new google.maps.Point(0, 32));
      var shadow = new google.maps.MarkerImage('images/beachflag_shadow.png',
          // The shadow image is larger in the horizontal dimension
          // while the position and offset are the same as for the main image.
          new google.maps.Size(37, 32),
          new google.maps.Point(0,0),
          new google.maps.Point(0, 32));
          // Shapes define the clickable region of the icon.
          // The type defines an HTML <area> element 'poly' which
          // traces out a polygon as a series of X,Y points. The final
          // coordinate closes the poly by connecting to the first
          // coordinate.
      var shape = {
          coord: [1, 1, 1, 20, 18, 20, 18 , 1],
          type: 'poly'
      };
      for (var i = 0; i < locations.length; i++) {
        var beach = locations[i];
        var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
        var marker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            shadow: shadow,
            icon: image,
            shape: shape,
            title: beach[0],
            zIndex: beach[3]
        });
      }
    }
    

    此处示例:Complex Icon Example

    【讨论】:

    • 谢谢。有没有办法指定自定义图标但默认阴影?
    猜你喜欢
    • 2017-12-29
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    相关资源
    最近更新 更多