沃梦达 / IT编程 / 前端开发 / 正文

html5指南-7.geolocation结合google maps开发一个小的应用

下面是关于“HTML5指南-7.geolocation结合google maps开发一个小的应用”的详细攻略:

下面是关于“HTML5指南-7.geolocation结合google maps开发一个小的应用”的详细攻略:

一、什么是geolocation?

Geolocation是HTML5的一个新特性,它能够让我们通过浏览器获取到用户的地理位置信息,以及海拔高度和速度等信息。

二、如何结合google maps开发应用?

如果想要将geolocation和google maps结合起来开发应用,我们需要使用Google Maps JavaScript API。在使用之前,首先需要在Google Cloud平台上创建一个项目,并且启用Google Maps JavaScript API。

  1. 创建一个HTML文件,引入Google Maps JavaScript API,以及地图所需要的样式和脚本:
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Geolocation and Google Maps</title>
  <style>
    #map {
      width: 100%;
      height: 500px;
    }
  </style>
  <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
  <script>
    function initMap() {
      // 初始化地图
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 17
      });
      // 获取用户的地理位置信息
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
          // 获取到位置之后在地图上显示标记
          var pos = {
            lat: position.coords.latitude,
            lng: position.coords.longitude
          };
          var marker = new google.maps.Marker({
            position: pos,
            map: map
          });
          map.setCenter(pos);
        }, function() {
          // 如果获取位置信息失败,给出提示
          alert('Unable to get your location!');
        });
      } else {
          // 如果浏览器不支持geolocation,给出提示
          alert('Your browser doesn\'t support Geolocation!');
      }
    }
  </script>
</head>
<body onload="initMap()">
  <div id="map"></div>
</body>
</html>
  1. 在上述代码中,需要将YOUR_API_KEY替换成自己在Google Cloud平台上创建的API密钥。并且,需要在initMap函数中使用navigator.geolocation.getCurrentPosition方法获取用户的位置信息,并在地图上显示标记。
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
    var pos = {
      lat: position.coords.latitude,
      lng: position.coords.longitude
    };
    var marker = new google.maps.Marker({
      position: pos,
      map: map
    });
    map.setCenter(pos);
  }, function() {
    alert('Unable to get your location!');
  });
} else {
    alert('Your browser doesn\'t support Geolocation!');
}

三、示例说明

  1. 在地图上显示当前位置和周围的POI。
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
    var pos = {
      lat: position.coords.latitude,
      lng: position.coords.longitude
    };
    var marker = new google.maps.Marker({
      position: pos,
      map: map
    });
    map.setCenter(pos);
    // 使用Places API搜索周围的POI
    var service = new google.maps.places.PlacesService(map);
    service.nearbySearch({
      location: pos,
      radius: 1000, // 搜索半径1000米
      types: ['store'] // 搜索商店
    }, function(results, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK) {
        for (var i = 0; i < results.length; i++) {
          createMarker(results[i]);
        }
      }
    });
  }, function() {
    alert('Unable to get your location!');
  });
} else {
    alert('Your browser doesn\'t support Geolocation!');
}

function createMarker(place) {
  // 在地图上显示POI标记
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });
  // 在标记上显示POI名称和地址
  var infowindow = new google.maps.InfoWindow();
  infowindow.setContent('<div><strong>' + place.name + '</strong><br>' +
    place.vicinity + '</div>');
  infowindow.open(map, marker);
}
  1. 根据用户输入的位置,显示在地图上。
// 在页面中添加一个输入框和按钮
<input type="text" id="address">
<button onclick="showAddress()">Search</button>

// 在地图上显示用户输入的位置
function showAddress() {
  var addressInput = document.getElementById('address');
  var address = addressInput.value;
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode({'address': address}, function(results, status) {
    if (status === google.maps.GeocoderStatus.OK) {
      var pos = results[0].geometry.location;
      map.setCenter(pos);
      var marker = new google.maps.Marker({
        map: map,
        position: pos
      });
      var infowindow = new google.maps.InfoWindow();
      infowindow.setContent(address);
      infowindow.open(map, marker);
    } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });
}

以上就是关于“HTML5指南-7.geolocation结合google maps开发一个小的应用”的详细攻略了,希望能对你有所帮助。

本文标题为:html5指南-7.geolocation结合google maps开发一个小的应用