开发者

Google Maps API v3 - Get map by address ?

开发者 https://www.devze.com 2023-03-23 19:40 出处:网络
i am new to google maps, and i would like to integrate it into my website ( Yellow pages kind of site ).

i am new to google maps, and i would like to integrate it into my website ( Yellow pages kind of site ).

i currently have the following code:

<!DOCTYPE html>

<html>
<head>
    <title></title>
    <script type="text/javascript" src="jquery-1.6.2.min.js"></script>
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var latlng = new google.maps.LatLng(-34.397, 150.644);
            var myOptions = { zoom: 8, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
            var map = new goo开发者_如何学Gogle.maps.Map(document.getElementById("map_canvas"), myOptions); 
        }); 
    </script>
</head>
<body>
    <div id="map_canvas" style="width: 500px; height: 300px; position: relative; background-color: rgb(229, 227, 223);"></div>
</body>
</html>

This code does work, and showing me the map for the specific Lat/Long

but, i want to be able to specifiy an address and not lat/long params, since i do have the addresses of the companies in the phonebook, but do not have the lat/long values.

i tried searching for this, but i only found something similar on the V2 version, which was deprecated.


What you are looking for is Geocode feature in google service; first give an address to get a LatLng, then call setCenter to pan the map to the specific location. Google's API wrapped it very good and you can see how it works through this example:

var geocoder;
var map;
function initialize() {
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(-34.397, 150.644);
  var mapOptions = {
    zoom: 8,
    center: latlng
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}

function codeAddress() {
  var address = document.getElementById('address').value;
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      map.setCenter(results[0].geometry.location);
      var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
      });
    } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });
}

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


You can use the google geocoder: http://code.google.com/apis/maps/documentation/geocoding/ Be careful - you can be out of quota and so the request to the geocoder will failed

Use of the Google Geocoding API is subject to a query limit of 2,500 geolocation requests per day.


If you are okay with an iframe, you can skip the geocoding hassle and use the Google Maps Embed API:

The Google Maps Embed API is free to use (with no quotas or request limits), however you must register for a free API key to embed a map on your site.

For example you would embed this into your page (replacing the ellipsis with your own personal Google API key):

<iframe width="600" height="450" frameborder="0" style="border:0"
src="https://www.google.com/maps/embed/v1/place?
q=301+Park+Avenue,+NY,+United+States&key=..."></iframe> 

Obviously the usefulness of this will depend on your use case but I like this as a quick and dirty solution.


There is a plugin for jQuery that makes it, it's name is gMap3, and you can see it in action here:

http://gmap3.net/examples/address-lookup.html

and here

http://jsfiddle.net/gzF6w/1/


gmap3 doesn't actually do it for you, as suggested by another answer: it just gives you an API to abstract-away the geocoding part of the process.

The answer is: Google doesn't actually allow you to do that anymore. At least not in V3, and since that's been around for more than a year...

You could actually send addresses for driving directions, but their API has made it illegal to send an address for a normal (embedded, API-based) map of any sort. The daily quota on geocoding is their play at "still allowing" addresses while in reality completely disallowing them for any real website.

You can link to a map with an address, though I cannot find this in Google's docs either:

http://maps.google.com/maps?f=d&saddr=&daddr=this is my address, city state

Maybe I just have a problem with this because they don't provide any clear, easy documentation - I have to come to StackOverflow to get the answers I'm looking for. Ie. they vaguely mention you need an API key to bypass the anonymous limits, but do not link either to what those limits are or how to use their API without a key. Which is what I want to do for skunkworks or proof-of-concept development. Instead Google wants to push their Maps for Businesses, etc., instead of providing actual information.

0

精彩评论

暂无评论...
验证码 换一张
取 消