【问题标题】:How to add marker on google map pin如何在谷歌地图针上添加标记
【发布时间】:2016-04-04 18:46:34
【问题描述】:

我正在尝试向我的谷歌地图添加一个标记,但由于某种原因它没有显示出来。地图本身工作正常,但标记不会显示。我正在关注 google api 文档,并且所有其他可自定义的功能都可以正常工作。我也尝试过手动添加 Lon 和 Lat,但没有。我确定它是我忽略的一些简单的东西,但我不确定它是什么,任何帮助将不胜感激。提前致谢。

<% if @location.latitude.present? && @location.longitude.present? %>
    <script>
    function initMap() {

    // Specify features and elements to define styles.
    var styleArray = [
      {
        featureType: "all",
        stylers: [
         { saturation: -80 }
        ]
      },{
        featureType: "road.arterial",
        elementType: "geometry",
        stylers: [
          { hue: "#00ffee" },
          { saturation: 50 }
        ]
      },{
        featureType: "poi.business",
        elementType: "labels",
        stylers: [
          { visibility: "off" }
        ]
      }
    ];

    var myLatLng = {lat: <%= @location.latitude %>, lng: <%= @location.longitude %>};

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 12,
      // styles: styleArray,
      center: myLatLng
    });

    var marker = new google.maps.Marker({
      position: myLatLng,
      map: map,
      title: <%= @location.name %>
    });
    }

    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?   signed_in=true&callback=initMap">
    </script>
    <div id="map"></div>
   <% end %>

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    好像你没有设置位置

     var marker = new google.maps.Marker({
      position: markerPos,
      map: map,
      title: <%= @location.name %>
    });
    

    markerPos .. 的值在哪里?

    try with myLatLng
    
    
    var marker = new google.maps.Marker({
      position: myLatLng,
      map: map,
      title: <%= @location.name %>
    });
    

    仅用于调试尝试不使用 location.name

    var marker = new google.maps.Marker({
      position: myLatLng,
      map: map
    });
    

    【讨论】:

    • 抱歉,这是我在尝试排除故障时忘记删除的变量。它仍然不起作用。
    • 感谢 scaisEdge 的回复,但是,我在调试时尝试过,但仍然没有。我正在使用 bing API 密钥,不确定是否与此有关?
    • 似乎没有,因为显示了地图..最终您可以尝试不使用密钥..(用于测试)
    • 有一个警告:Google Maps API 警告:NoApiKeys developers.google.com/maps/documentation/javascript/…,但我认为这是由于使用了 bing API 密钥。
    • 你确定地图工作正常吗?...我没有看到 .. 地图 div 的宽度和高度...这些值必须正确设置...
    【解决方案2】:

    问题出在这里:

    var marker = new google.maps.Marker({
          position: myLatLng,
          map: map,
          title: <%= @location.name %>
        });
    

    您正在输出 location.name,但它需要包含在带引号的字符串中。现在,如果您查看源代码并看到客户端代码,我认为它看起来像:

    var marker = new google.maps.Marker({
          position: myLatLng,
          map: map,
          title: Hello World
        });
    

    您可能遇到了 JS 错误。试试看:

    var marker = new google.maps.Marker({
          position: myLatLng,
          map: map,
          title: '<%= @location.name %>'
        });
    

    【讨论】:

    • 这也不起作用,我开箱即用,标题为:“Hello World”...由于某种原因,它只是没有出现。
    • 听起来您将标记与 infowindows 混淆了。正如您发现的那样,当您将鼠标悬停在标记上时,“title”属性就会显示出来。
    猜你喜欢
    • 1970-01-01
    • 2016-03-16
    • 2017-12-25
    • 2021-09-12
    • 1970-01-01
    • 2015-08-18
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多