Google Maps Lat / Long Finder脚本

时间:2012-03-28 17:10:59

标签: php javascript jquery google-maps

我正在寻找一个脚本,我可以在输入框中添加地址或邮政编码,并在另一个输入框中显示google latitute和longitute。

我发现这个网站是这样做的:

http://www.doogal.co.uk/LatLong.php

但我不需要那么多,只需要找到你有搜索,纬度和经度部分的部分。

任何人都可以提供任何信息或网址或脚本来执行此操作吗?

我找到的所有地址都是地图地址......我只需要经纬度和地址。

5 个答案:

答案 0 :(得分:1)

他们在that page上使用的代码是:

function Geocode()
            {
                $("#locations").html("");
                $("#error").html("");
                // geocode with google.maps.Geocoder
                var localSearch = new google.maps.Geocoder();
                var postcode = $("#postcode").val();
                localSearch.geocode({ 'address': postcode },
                    function(results, status) {
                        if (results.length == 1) {
                            var result = results[0];
                            var location = result.geometry.location;
                            GotoLocation(location);
                        }
                        else if (results.length > 1) {
                            $("#error").html("Multiple addresses found");
                            // build a list of possible addresses
                            var html = "";
                            for (var i=0; i<results.length; i++) {
                                html += '<a href="javascript:GotoLocation(new google.maps.LatLng(' + 
                                    results[i].geometry.location.lat() + ', ' + results[i].geometry.location.lng() + '))">' + 
                                    results[i].formatted_address + "</a><br/>";
                            }
                            $("#locations").html(html);
                        }
                        else {
                            $("#error").html("Address not found");
                        }
                    });
            }

#postcode是您在该网站一侧键入地址的地方,results[i].geometry.location.lat() + ', ' + results[i].geometry.location.lng()循环中的for将是您的纬度/经度...

答案 1 :(得分:1)

如果您使用Google Maps API,则对地址进行地理编码非常简单。 address是用户输入街道地址的文本字段。 latlng是一个文本字段,用于保存输出的纬度/经度。

$('#searchButton').click(function() {
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode( {'address': $('#address').val() }, function(data, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      $('#latlng').val(data[0].geometry.location.lat+", "+data[0].geometry.location.lng);
    else {
      alert("Geocode was not successful for the following reason: " + status);
    }
  });
  return false;
});

请参阅https://google-developers.appspot.com/maps/documentation/javascript/examples/geocoding-simple

答案 2 :(得分:0)

您需要获取API密钥并实施Google Geocoding API

或者,geocoder.us也提供免费解决方案。

答案 3 :(得分:0)

我为我的网站构建了经纬度查找器:

请参阅: https://www.revilodesign.de/tools/google-maps-latitude-longitude-finder/

function initAutocomplete() {
	
	var markers = [];
	
	autocomplete = new google.maps.places.Autocomplete((document.getElementById('address')),{
		types: ['geocode']
	});
	
	var myLatLng = {
		lat			:	52.520008,
		lng			:	13.404954
	};
		
	var map		=	new google.maps.Map(document.getElementById('map'), {
		zoom		:	2,
		center		:	myLatLng
	});
	
	
	// START BY CLICK
	jQuery('div#find').on('click', function() {
		LatLngSearch();			
	});
	
	// START BY PRESS ENTER
	jQuery('#address').bind("enterKey",function(e){
		LatLngSearch();	
	});
	jQuery('#address').keyup(function(e){
		if(e.keyCode == 13) {
			LatLngSearch();
		}
	});
	
	// DELETE ALL MARKERS
	function DeleteMarkers() {
		for (var i = 0; i < markers.length; i++) {
			markers[i].setMap(null);
		}
		markers = [];
	};
	
	// SHOW LAT LNG		
	function LatLngSearch(  ) {
		
		var value	=	jQuery('input#address').val();
		
		if ( value ) {
			var request		=	$.ajax({
				url			:	"ajax.php",
				method		:	"POST",
				data		:	{ 
									address		:	value
								},
				dataType	:	'json',
				success		:	function(result) {
	  
					console.log(result);
					
					if ( result['lat'] && result['lng'] ) {
	    
						DeleteMarkers();
	    
						jQuery('div#geometry').append('<p><strong>Latitude:</strong> <input readonly="" value="' + result['lat'] + '" /></p>');
	      
						jQuery('div#geometry').append('<p><strong>Longitude:</strong> <input readonly="" value="' + result['lng'] + '" /></p>');
						
						var searchLatLng = {
							lat			:	result['lat'],
							lng			:	result['lng']
						};
						
						// CENTER MAP
						var map		=	new google.maps.Map(document.getElementById('map'), {
							zoom		:	14,
							center		:	searchLatLng
						});
						
						var marker = new google.maps.Marker({
							map			:	map,
							position	:	searchLatLng,
							animation	:	google.maps.Animation.DROP
			            });
			            
			            var infowindow	=	new google.maps.InfoWindow({
							content: '<strong>Lat:</strong> ' + result['lat'] + '<br><strong>Lng:</strong> ' + result['lng']
						});
						infowindow.open(map,marker);
						
						// ADD MARKER TO ARRAY
						markers.push(marker);
					}
					
				},
				error		:	function (xhr, ajaxOptions, thrownError) {
					alert(xhr.status);
					alert(thrownError);
				}
			});
		}
	}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initAutocomplete" async defer></script>
<div id="finder">
	<div id="finder-search">
		<input id="address" type="text" />
		<div id="find" class="btn button scale-minus">Search</div>
	</div>
	<div id="geometry"></div>
	<div id="map"></div>
</div>

和ajax.php

$address            =   $_POST['address'];
$address            =   str_replace(array('ä','ü','ö','ß'), array('ae', 'ue', 'oe', 'ss'), $address );
$address            =   preg_replace("/[^a-zA-Z0-9\_\s]/", "", $address);
$address            =   strtolower($address);
$address            =   str_replace( array(' ', '--'), array('-', '-'), $address );                     
$address            =   'https://maps.googleapis.com/maps/api/geocode/json?address=' . $address . '&key=YOUR_API_KEY';

$json               =   file_get_contents($address);
$obj                =   json_decode($json); 

$datas['lat']       =   $obj->results[0]->geometry->location->lat;
$datas['lng']       =   $obj->results[0]->geometry->location->lng;

echo json_encode( $datas );

答案 4 :(得分:0)

draw_plot

我已在我的网站latlongfinder

中使用了它