使用Google Maps Javascript结合地理定位和标记

时间:2016-09-27 08:27:34

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

我正在尝试制作一张地图,显示您当前的位置并在城市中显示标记。所以你可以看到你附近的标记。

此时我必须编码,我需要将它们组合起来。但是当我这样做时,代码不再起作用了。有人知道如何结合这两个JS吗?如果没有,还有其他办法吗?

这是地理位置的JS:

function initMap() 
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 14,
});
var infoWindow = new google.maps.InfoWindow({map: map});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
  var pos = {
    lat: position.coords.latitude,
    lng: position.coords.longitude
  };

  infoWindow.setPosition(pos);
  infoWindow.setContent('Location found.');
  map.setCenter(pos);
}, function() {
  handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
                    'Error: The Geolocation service failed.' :
                    'Error: Your browser doesn\'t support geolocation.');
}

这是我为标记制作的JS代码:

google.maps.event.addDomListener(window, 'load', initialize);
var map;
var currentPage = 'mapA';
var markers = [
['Thuis',52.2203713,6.90032999999994],
['Bommelstein',52.22254299999999,6.911623800000029],
['Saxion', 52.21976009999999,6.889364500000056],
['Kroeg', 52.2206085,6.896547300000066],
['t Gat', 52.2211657,6.895848999999998],
['studieruimte de Bul', 52.22101940903001,6.8924690438436755]
];
function initialize() {
var mapOptions = {
    zoom: 14,
    disableDoubleClickZoom: true,
    draggable: true,
    panControl: false,
    scrollwheel: true,
    zoomControl: true,
    streetViewControl: false,
    overviewMapControl: false,
    mapTypeControl: false,
    center: new google.maps.LatLng(51.489031, 7.039671)
};
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);

setMarkers();}function setMarkers(){
for (i = 0; i < markers.length; i++) {
    var post = new google.maps.LatLng(markers[i][1], markers[i][2]);
    var marker = new google.maps.Marker({
        position: post,
        map: map
    });

    var infowindow = new google.maps.InfoWindow({
        content: markers[i][0]
    });

    infowindow.open(map,marker);
}
}

1 个答案:

答案 0 :(得分:0)

我实际上正在研究同样的问题,直到几分钟前。我只是在声明地图对象之前启动地理定位条件以找到位置,这对我有效。这是我的简单代码:

function initMap() {
   // Try HTML5 geolocation.
   if (navigator.geolocation) {
       navigator.geolocation.getCurrentPosition(function(position) {
           var currentpos = {
               lat: position.coords.latitude,
               lng: position.coords.longitude
           };
           var map = new google.maps.Map(document.getElementById('map'), {
               center: currentpos,
               zoom: 14,
           });

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

           var marker = new google.maps.Marker({
                position: pos,
                map: map,
                title: 'marker with infoWindow'
           });
           marker.addListener('click', function() {
               infowindow.open(map, marker);
          });
      }, function() {
           handleLocationError(true, infoWindow, map.getCenter());
      });
    } else {
          // Browser doesn't support Geolocation
          handleLocationError(false, infoWindow, map.getCenter());
    }
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
    infoWindow.setPosition(pos);
    infoWindow.setContent(browserHasGeolocation ?
                          'Error: The Geolocation service failed.' :
                          'Error: Your browser doesn\'t support geolocation.');
}

祝你好运