2010-09-27 39 views
27

Xin chào formulla là gì để có được kinh độ và vĩ độ của bất kỳ địa chỉ nào, nếu tôi có street_name, State_name, City_name, Country_name và mã zip trong PHP? Cảm ơnLàm cách nào để có được kinh độ và vĩ độ của bất kỳ địa chỉ nào?

+0

Hi Ajay - Tôi nghĩ rằng bạn có nghĩa là "kinh độ" – Paddyslacker

+5

thể trùng lặp của [Làm thế nào để có được kinh độ và vĩ độ cho một địa chỉ đường phố lập trình (và hợp pháp)] (http: // stackoverflow.com/questions/158474/how-to-get-longitude-and-latitude-for-a-street-address-program -atic-and-l) – jball

+0

Để làm rõ, không có công thức, nhưng các công ty cung cấp dịch vụ mã hóa địa lý. Xem "dupe" được liên kết ở trên. – jball

Trả lời

1

Bạn cần truy cập dịch vụ mã hóa địa lý (tức là từ Google), không có công thức đơn giản nào để chuyển địa chỉ sang tọa độ địa lý.

2

Bạn có thể sử dụng API Google Maps cho điều đó. Xem bài đăng trên blog dưới đây để biết thêm thông tin.

http://stuff.nekhbet.ro/2008/12/12/how-to-get-coordinates-for-a-given-address-using-php.html

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ review/low-quality-posts/18603186) – Don

0

Không có forumula, như tên, thành phố đường phố là chủ yếu trao ngẫu nhiên. Địa chỉ cần được tra cứu trong cơ sở dữ liệu. Ngoài ra, bạn có thể tra cứu mã zip trong cơ sở dữ liệu cho khu vực mà mã zip cho.

Bạn không đề cập đến một quốc gia, vì vậy tôi sẽ giả sử bạn chỉ muốn có địa chỉ ở Hoa Kỳ. Có rất nhiều cơ sở dữ liệu bạn có thể sử dụng, một số miễn phí, một số không.

Bạn cũng có thể sử dụng API Google Maps để yêu cầu họ tra cứu địa chỉ trong cơ sở dữ liệu của họ cho bạn. Đó có lẽ là giải pháp dễ nhất, nhưng yêu cầu ứng dụng của bạn luôn có kết nối internet hoạt động.

3

Bạn nên có một cái nhìn tại các thư viện Geocoder PHP5 :)

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần quan trọng của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/chất lượng thấp-bài viết/18603183) –

77

bạn có thể sử dụng mã dưới đây để nhận lat, dài bằng php. Dưới đây là hai loại để có được điều này

Loại-1

<?php 
    // Get lat and long by address   
     $address = $dlocation; // Google HQ 
     $prepAddr = str_replace(' ','+',$address); 
     $geocode=file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'&sensor=false'); 
     $output= json_decode($geocode); 
     $latitude = $output->results[0]->geometry->location->lat; 
     $longitude = $output->results[0]->geometry->location->lng; 

?> 

chỉnh sửa - yêu cầu Google Maps phải trên https

Loại-2

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script> 
    var geocoder; 
    var map; 
    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(50.804400, -1.147250); 
    var mapOptions = { 
    zoom: 6, 
    center: latlng 
    } 
    map = new google.maps.Map(document.getElementById('map-canvas12'), mapOptions); 
    } 

    function codeAddress(address,tutorname,url,distance,prise,postcode) { 
    var address = address; 

    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 
    }); 

    var infowindow = new google.maps.InfoWindow({ 
    content: 'Tutor Name: '+tutorname+'<br>Price Guide: '+prise+'<br>Distance: '+distance+' Miles from you('+postcode+')<br> <a href="'+url+'" target="blank">View Tutor profile</a> ' 
    }); 
    infowindow.open(map,marker); 

     } /*else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    }*/ 
    }); 
} 


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

window.onload = function(){ 
    initialize(); 
    // your code here 
    <?php foreach($addr as $add) { 

    ?> 
    codeAddress('<?php echo $add['address']; ?>','<?php echo $add['tutorname']; ?>','<?php echo $add['url']; ?>','<?php echo $add['distance']; ?>','<?php echo $add['prise']; ?>','<?php echo substr($postcode1,0,4); ?>'); 
    <?php } ?> 
}; 
    </script> 

<div id="map-canvas12"></div> 
+0

Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn bạn! Tôi có thể hỏi gì không? Tôi chỉ cần chức năng này để tính toán nội bộ. Tài liệu API nói rõ ràng rằng API chỉ có thể được sử dụng kết hợp với dịch vụ Google Maps. Ví dụ mã của bạn có trong tình trạng này không? – CHaP

+0

Mã loại 2 là có đánh dấu địa chỉ –

+0

Ở loại 1, tôi nhận được "Bạn đã vượt quá hạn ngạch yêu cầu hàng ngày cho API này". như một thông báo lỗi sau một vài thử nghiệm ... bất kỳ giải pháp nào để không nhận được hạn ngạch yêu cầu hàng ngày? – Jeremy

1

PHP có một số chức năng được xây dựng tốt đẹp để nhận được địa lý lo cation. Có thể xem tại đây: http://php.net/manual/en/ref.geoip.php

Theo hướng dẫn sử dụng php, "Tiện ích mở rộng này yêu cầu thư viện GeoIP C phiên bản 1.4.0 trở lên phải được cài đặt. Bạn có thể lấy phiên bản mới nhất từ» http://www.maxmind.com/app/c và tự biên dịch. "

1

tôi đã đưa ra những điều sau đây mà mất tài khoản rác thông qua vào và đào tạo Quản lý thất bại ....

function get_lonlat( $addr ) { 
    try { 
      $coordinates = @file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode($addr) . '&sensor=true'); 
      $e=json_decode($coordinates); 
      // call to google api failed so has ZERO_RESULTS -- i.e. rubbish address... 
      if (isset($e->status)) { if ($e->status == 'ZERO_RESULTS') {echo '1:'; $err_res=true; } else {echo '2:'; $err_res=false; } } else { echo '3:'; $err_res=false; } 
      // $coordinates is false if file_get_contents has failed so create a blank array with Longitude/Latitude. 
      if ($coordinates == false || $err_res == true ) { 
       $a = array('lat'=>0,'lng'=>0); 
       $coordinates = new stdClass(); 
       foreach ( $a as $key => $value) 
       { 
        $coordinates->$key = $value; 
       } 
      } else { 
       // call to google ok so just return longitude/latitude. 
       $coordinates = $e; 

       $coordinates = $coordinates->results[0]->geometry->location; 
      } 

      return $coordinates; 
    } 
    catch (Exception $e) { 
    } 

sau đó để có được những dây: nơi $ pc là mã bưu điện hoặc địa chỉ .... $ address = get_lonlat ($ pc); $ l1 = $ address-> lat; $ l2 = $ address-> lng;

9
<?php 
$address = 'BTM 2nd Stage, Bengaluru, Karnataka 560076'; // Address 

// Get JSON results from this request 
$geo = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false'); 
$geo = json_decode($geo, true); // Convert the JSON to an array 

if (isset($geo['status']) && ($geo['status'] == 'OK')) { 
    $latitude = $geo['results'][0]['geometry']['location']['lat']; // Latitude 
    $longitude = $geo['results'][0]['geometry']['location']['lng']; // Longitude 
}?> 
Các vấn đề liên quan