Google地图按地址搜索

时间:2015-11-14 20:08:31

标签: javascript angularjs html5 google-maps dom

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

我想将该位置传递给我的地图。现在我添加了lat,long。 或者有一个快速的方法来找到使用javascript的lat和long?

$ok= $_POST['ok']; //this doesnt work

if($ok== "ok" ){ 
  echo "works";
}


<script type="text/javascript">
    $(document).ready(function() {
        var frm = $('#form');
        frm.submit(function (ev) {
            $.ajax({
                type: frm.attr('method'),
                url: frm.attr('action'),
                data: frm.serialize(),

            });
            ev.preventDefault();
        });
    });

 function submitForm2() {
        $('#form').submit();
    }
</script>

<div onclick='submitForm2();'></div>

<form action='' method='post' id='form'>
        <input type="hidden" name='ok' value="ok">

    </form>

http://jsfiddle.net/pc7Uu/346

感谢您的帮助。

最佳

4 个答案:

答案 0 :(得分:0)

它被称为地理编码,它实际上非常易于使用,请阅读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

您将获得一个带有“location”键内坐标的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示例。

答案 1 :(得分:0)

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

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

<强> 1。向Google地理编码API发送请求:此请求将包含您尝试查找lat&amp; lng的地址。您将收到JSON形式的回复,您将解析该回复以获取所需的信息。

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

第3。创建一个地图,并使用上面找到的lat&amp; lng作为其中心。

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

  1. 如何发送'GET'请求:

    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (request.readyState === 4) {
            if (request.status === 200) {
                document.body.className = 'ok';
            } else {
                document.body.className = 'error';
            }
        }
    };
    request.open("GET", url , true);
    request.send(null);
    
  2. 地理编码的http请求: https://developers.google.com/maps/documentation/geocoding/intro#GeocodingRequests

    1. 以下是代码的样子:(示例)

      var json = https://maps.googleapis.com/maps/api/geocode/json?address=1600+"ADD ADDRESS HERE"&key=YOUR_API_KEY;
      var object = JSON.parse(json);
      
    2. 然后你可以从这个对象中提取lat&amp; lng。

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

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

答案 2 :(得分:0)

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>

答案 3 :(得分:0)

我使用这个插件非常简单:

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

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

结合使用

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