【问题标题】:How to make the marker show up on the Google map如何让标记出现在谷歌地图上
【发布时间】:2015-08-06 23:35:45
【问题描述】:

我正在尝试让标记显示在谷歌地图上。我已经到过这里的各种 SO 页面。你能告诉我在地图上显示标记的代码吗?

我有这个 Javascript:

function geoFindMe() {
  var output = document.getElementById("latlongdiv");

      if (!navigator.geolocation){
        output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
        return;
      }

      function success(position) {
        var latitude  = position.coords.latitude;
        var longitude = position.coords.longitude;

        output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';

        var img = new Image();
        img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";

        output.appendChild(img);
      };

      function error() {
        output.innerHTML = "Unable to retrieve your location";
      };

      output.innerHTML = "<p>Locating</p>";

      navigator.geolocation.getCurrentPosition(success, error);
    }

    // Function for adding a marker to the page.
        function addMarker(location) {
            marker = new google.maps.Marker({
                position: latlng,
                map: map
            });
        }

这里是jsbin:

http://jsbin.com/luwakoburo/edit?html,console,output

这里是我已经检查过的其他页面:

Add Marker function with Google Maps API

setting google maps marker javascript

【问题讨论】:

    标签: javascript google-maps marker


    【解决方案1】:

    请参阅documentation for static maps。要在地图上放置标记,请使用 markers=latitude,longitude。

    标记

    markers 参数在一组位置定义一组一个或多个标记。

    working fiddle

    代码 sn-p:

    function geoFindMe() {
      var output = document.getElementById("latlongdiv");
    
      if (!navigator.geolocation) {
        output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
        return;
      }
    
      function success(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
    
        output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';
    
        var img = new Image();
        img.src = "https://maps.googleapis.com/maps/api/staticmap?markers=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";
    
        output.appendChild(img);
      }
    
      function error() {
        output.innerHTML = "Unable to retrieve your location";
      }
    
      output.innerHTML = "<p>Locating</p>";
    
      navigator.geolocation.getCurrentPosition(success, error);
    }
    geoFindMe();
    // Function for adding a marker to the page.
    function addMarker(location) {
      marker = new google.maps.Marker({
        position: latlng,
        map: map
      });
    }
    &lt;div id="latlongdiv"&gt;&lt;/div&gt;

    【讨论】:

    • 谢谢。我明天要做这个。这里是午夜。
    • 这成功了!谢谢!您应该在 SO 获得更多声誉。
    【解决方案2】:

    更改图片网址以添加标记,如下所示:

    img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + 纬度 + "," + 经度 + "&zoom=13&size=300x300&sensor=false&markers=" + 纬度 + "," + 经度;

    【讨论】:

    • 这不起作用。我不是那种 JS 类型的人,但我认为您的示例 URL 末尾的分号不应该在那里。还是谢谢。
    • 我以为您可以看到地图,只是您无法放置标记。因此,如果地图不可见,您必须做 3 件事才能使您的代码正常工作。 (1) 在你的 body 中添加 div
      (2) 调用 geoFindMe() 方法。你可以在addMarker(location)函数后添加geoFindMe()(3)修改image.src url添加&markers=" + latitude + "," + longitude; 这里是jsbin jsbin.com/jaganuderu/1/edit?html,js,console,output
    • 是的,地图已经可见。它只是缺少标记。谢谢。
    【解决方案3】:

    在成功回调中,需要使用经纬度生成地图和标记对象。

    典型的流程如下:

    1. 调用navigator.geolocation.getCurrentPosition()

    在getCurrentPosition()的成功回调中

    1. 获取一个正确位置的地图对象:

      var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

      var mapOptions = {

      缩放:13,

      中心:位置

      };

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

    2. 使用地图生成标记

      var 标记 = 新的 google.maps.Marker({

      地图:地图,

      位置:位置

      });

    这是一个很好的参考: https://developers.google.com/maps/documentation/javascript/markers

    【讨论】:

    • 您的示例几乎只是将 "position: latlng", - 更改为 → "position: pos" ,对吗?
    猜你喜欢
    • 1970-01-01
    • 2016-02-08
    • 2014-11-20
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多