小编典典

通过Google Maps API使用地址而不是经度和纬度

javascript

我听说可以提交一个地址而不是经度和纬度,这对于我的系统来说将更加可行。用户在创建个人资料时必须输入他们的地址,之后他们的个人资料将显示其房屋的Google地图。我目前可以将Google
Maps API与经度和纬度完美配合使用:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="css.css" />
    <title>Login Page</title>

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0; padding: 0 }
  #map-canvas { height: 100% }
</style>
<script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?key=MYKEY&sensor=false">
</script>
<script type="text/javascript">
  function initialize() {
    var mapOptions = {
  center: new google.maps.LatLng(52.640143,1.28685),
      zoom: 15,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map"),
        mapOptions);

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(52.640143,1.28685),
    map: map,
    title: "Mark On Map"
});
  }
  google.maps.event.addDomListener(window, 'load', initialize);
</script>

</head>

请有人帮我修改代码,以便它使Google Maps API可以在其位置请求地址,因为我想直接从mySQL数据库中读取用户的地址。


阅读 359

收藏
2020-05-01

共1个答案

小编典典

使用Google Maps Javascript API v3
Geocoder将地址转换为可以在地图上显示的坐标。

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Geocoding Simple</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var geocoder;
  var map;
  var address ="San Diego, CA";
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    if (geocoder) {
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
          map.setCenter(results[0].geometry.location);

            var infowindow = new google.maps.InfoWindow(
                { content: '<b>'+address+'</b>',
                  size: new google.maps.Size(150,50)
                });

            var marker = new google.maps.Marker({
                position: results[0].geometry.location,
                map: map, 
                title:address
            }); 
            google.maps.event.addListener(marker, 'click', function() {
                infowindow.open(map,marker);
            });

          } else {
            alert("No results found");
          }
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });
    }
  }
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
 <div id="map_canvas" style="width:100%; height:100%">
</body>
</html>

工作代码段:

var geocoder;

var map;

var address = "San Diego, CA";



function initialize() {

  geocoder = new google.maps.Geocoder();

  var latlng = new google.maps.LatLng(-34.397, 150.644);

  var myOptions = {

    zoom: 8,

    center: latlng,

    mapTypeControl: true,

    mapTypeControlOptions: {

      style: google.maps.MapTypeControlStyle.DROPDOWN_MENU

    },

    navigationControl: true,

    mapTypeId: google.maps.MapTypeId.ROADMAP

  };

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  if (geocoder) {

    geocoder.geocode({

      'address': address

    }, function(results, status) {

      if (status == google.maps.GeocoderStatus.OK) {

        if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {

          map.setCenter(results[0].geometry.location);



          var infowindow = new google.maps.InfoWindow({

            content: '<b>' + address + '</b>',

            size: new google.maps.Size(150, 50)

          });



          var marker = new google.maps.Marker({

            position: results[0].geometry.location,

            map: map,

            title: address

          });

          google.maps.event.addListener(marker, 'click', function() {

            infowindow.open(map, marker);

          });



        } else {

          alert("No results found");

        }

      } else {

        alert("Geocode was not successful for the following reason: " + status);

      }

    });

  }

}

google.maps.event.addDomListener(window, 'load', initialize);


html,

body,

#map_canvas {

  height: 100%;

  width: 100%;

}


<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

<div id="map_canvas" ></div>
2020-05-01