【问题标题】:Google map search by address谷歌地图按地址搜索
【发布时间】:2016-02-16 05:14:07
【问题描述】:

如何按位置(地址)进行搜索。

我想将位置传递给我的地图。现在我添加了纬度,经度。 或者有没有一种快速的方法来使用 javascript 找出经纬度?

 var mapOptions = {
        zoom: 4,
        center: new google.maps.LatLng(40.0000, -98.0000), Here I want to just add the location for example Dublin, Ireland
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }

http://jsfiddle.net/pc7Uu/346

感谢您的帮助。

最好的

【问题讨论】:

标签: javascript angularjs html google-maps dom


【解决方案1】:

它被称为地理编码,它实际上很容易使用,请阅读The Google Maps Geocoding API 开始使用,因为您使用的是 JavaScript,所以不需要 API_KEY,因此您可以通过请求将地址转换为 lat/lng 值像这样:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA

您将获得一个带有“位置”键内坐标的 JSON,如下所示:

...
"location" : {
    "lat" : 37.4220352,
    "lng" : -122.0841244
},
...

从 V2 到 V3 有一些变化(推荐)。如果您想使用特定版本,以下是这两个文档:

V3 API:http://code.google.com/apis/maps/documentation/geocoding/

V2 API:http://code.google.com/apis/maps/documentation/services.html#Geocoding

如果您希望自动完成功能和/或站点名称为 lat/lng 坐标,请查看 Place Autocomplete Hotel Search 示例。

【讨论】:

【解决方案2】:

我认为你现在的代码不会做你想做的事情。

首先,这是代码需要做的事情,用简单的英语。我稍后会解释每个部分。

1.向 Google Geocoding API 发送请求:此请求将包含您尝试查找 lat&lng 的地址。您将收到 JSON 格式的响应,您将对其进行解析以获取所需的信息。

2。将信息(纬度和经度)保存在变量中

3.创建一张地图,并使用您在上面找到的 lat&lng 作为其中心。

好的,现在这里是代码的来源。不用担心,这些代码示例非常简单,您会很容易理解该怎么做。

  1. 如何发送“GET”请求:

    var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState === 4) { 如果(request.status === 200){ document.body.className = '好的'; } 别的 { document.body.className = '错误'; } } }; request.open("GET", url, true); request.send(null);

地理编码的http请求: https://developers.google.com/maps/documentation/geocoding/intro#GeocodingRequests

  1. 代码如下所示:(示例)

    var json = https://maps.googleapis.com/maps/api/geocode/json?address=1600+"在此处添加地址"&key=YOUR_API_KEY; var object = JSON.parse(json);
  2. 然后你可以从这个对象中提取lat&lng。

  3. 之后,使用以下方法创建地图:(链接)www.developers.google.com/maps/tutorials/fundamentals/adding-a-google-map

(使用您在上面提取的纬度和经度作为您将创建的谷歌地图的“中心”)

【讨论】:

    【解决方案3】:

    Google Maps Geocoding API 就是为了这个目的,下面的例子展示了如何根据提供的地址设置地图中心:

    //Data
    var cities = [
        {
            city : 'Toronto',
            desc : 'This is the best city in the world!',
            lat : 43.7000,
            long : -79.4000
        },
        {
            city : 'New York',
            desc : 'This city is aiiiiite!',
            lat : 40.6700,
            long : -73.9400
        },
        {
            city : 'Chicago',
            desc : 'This is the second best city in the world!',
            lat : 41.8819,
            long : -87.6278
        },
        {
            city : 'Los Angeles',
            desc : 'This city is live!',
            lat : 34.0500,
            long : -118.2500
        },
        {
            city : 'Las Vegas',
            desc : 'Sin City...\'nuff said!',
            lat : 36.0800,
            long : -115.1522
        }
    ];
    
    //Angular App Module and Controller
    angular.module('mapsApp', [])
    .controller('MapCtrl', function ($scope) {
    
        var mapOptions = {
            zoom: 4,
            //center: new google.maps.LatLng(40.0000, -98.0000),
            mapTypeId: google.maps.MapTypeId.TERRAIN
        }
    
        $scope.map = new google.maps.Map(document.getElementById('map'), mapOptions);
        
    
    
        var setMapCenterByAddress = function(map,address) {
            var geocoder = new google.maps.Geocoder();
            if (geocoder) {
                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,
                             title: address
                        });
                    }
                    else {
                        console.log("Geocoding failed: " + status);
                    }
                });
            }
        };
    
        setMapCenterByAddress($scope.map,'Dublin, Ireland');
    
    });
    <script src="http://maps.googleapis.com/maps/api/js?key=&sensor=false"></script>
    <script src="http://code.angularjs.org/1.2.25/angular.js"></script>
    <script src="map.js"></script>
    <style>
    #map {
        height:420px;
        width:600px;
    }
    </style>
    <div ng-app="mapsApp" ng-controller="MapCtrl">
        <div id="map"></div>
    </div>

    【讨论】:

      【解决方案4】:

      我用这个插件很简单:

      https://ubilabs.github.io/geocomplete/

      地理位置到坐标的替代免费服务,您可以使用openstreet地图,您可以将其与jquery autocomplete结合使用

      http://nominatim.openstreetmap.org/search/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        相关资源
        最近更新 更多