如何按位置(地址)进行搜索。
我想将该位置传递给我的地图。现在我添加了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>
感谢您的帮助。
最佳
答案 0 :(得分:0)
它被称为地理编码,它实际上非常易于使用,请阅读The Google Maps Geocoding API 以开始使用,因为您使用的是JavaScript,因此您不需要API_KEY,因此您可以将地址实际转换为lat / lng值有这样的要求:
您将获得一个带有“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作为其中心。
好的,现在这里是代码的来源。不用担心,这些代码示例非常简单,您将很容易理解该做什么。
如何发送'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);
地理编码的http请求: https://developers.google.com/maps/documentation/geocoding/intro#GeocodingRequests
以下是代码的样子:(示例)
var json = https://maps.googleapis.com/maps/api/geocode/json?address=1600+"ADD ADDRESS HERE"&key=YOUR_API_KEY; var object = JSON.parse(json);
然后你可以从这个对象中提取lat&amp; lng。
之后,使用以下方式创建地图:(链接)www.developers.google.com/maps/tutorials/fundamentals/adding-a-google-map
(使用您在上面提取的纬度和经度作为您将创建的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
结合使用