Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tự động điền quốc gia và thành phố từ mã zip và tùy chọn

* Điều này rất dễ dàng, những gì bạn cần làm chỉ là lấy mã zip từ người dùng và với điều đó, bạn có thể lấy $ country và $ city bằng google api. Ở đây tôi cung cấp cho bạn một ví dụ về cách tôi lấy kinh độ và vĩ độ từ mã bưu điện, tức là mã zip.

$postcode=$_POST('postcode');
                if($postcode)
                {

                    $address = urlencode($postcode);
                    $url='http://maps.googleapis.com/maps/api/geocode/json?address='.$address.'&sensor=false';

                    $ch = curl_init(); 
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                    curl_setopt($ch, CURLOPT_URL, $url);
                    $data = curl_exec($ch);
                    curl_close($ch);
                    $source = $data;
                    $obj = json_decode($source);
                    $lat = $obj->results[0]->geometry->location->lat;
                    $long = $obj->results[0]->geometry->location->lng;


                }
$longitude=$long;
$latitude=$lat;

than bạn có thể chèn hai biến $ longitude và $ latitude ở trên vào cơ sở dữ liệu của mình. đơn giản như vậy :) . hãy truy cập liên kết sau https://developers.google.com/ maps / document / geocoding /? csw =1

bây giờ để lấy tên quốc gia từ kinh độ và vĩ độ, hãy sử dụng mã hóa địa lý ngược. hỗ trợ một cặp vĩ độ / kinh độ được phân tách bằng dấu phẩy trong tham số latLng.

 var geocoder;
  var map;
  var infowindow = new google.maps.InfoWindow();
  var marker;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(40.730885,-73.997383);
    var mapOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
  }

  function codeLatLng() {
    var input = document.getElementById("latlng").value;
    var latlngStr = input.split(",",2);
    var lat = parseFloat(latlngStr[0]);
    var lng = parseFloat(latlngStr[1]);
    var latlng = new google.maps.LatLng(lat, lng);//here you will get your country and city name
    geocoder.geocode({'latLng': latlng}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        if (results[1]) {
          map.setZoom(11);
          marker = new google.maps.Marker({
              position: latlng,
              map: map
          });
          infowindow.setContent(results[1].formatted_address);
          infowindow.open(map, marker);
        }
      } else {
        alert("Geocoder failed due to: " + status);
      }
    });
  }

đọc về mã địa lý ngược tại đây và sửa đổi mã theo nhu cầu của bạn https:// Develop.google.com/maps/documentation/javascript/geocoding#ReverseGeocoding

Sử dụng:getLocations (latlng:GLatLng, callback:function)

Phương pháp này thực hiện mã hóa địa lý ngược, chuyển đổi một cặp vĩ độ / kinh độ thành các địa chỉ mà con người có thể đọc được. getLocations () gửi yêu cầu đến dịch vụ mã hóa địa lý của Google, yêu cầu dịch vụ này trả lại địa chỉ cho latlng đã cho và chuyển phản hồi trong lệnh gọi lại đã cho.

Vì phương pháp này yêu cầu một cuộc gọi đến máy chủ Google, bạn cũng phải chuyển một phương thức gọi lại để xử lý phản hồi. Phản hồi này sẽ chứa mã Trạng thái và nếu thành công, một hoặc nhiều đối tượng Dấu vị trí.

Lưu ý rằng thay vào đó, phương thức này có thể chuyển một Chuỗi có thể địa chỉ, như được chỉ ra ở trên; trong trường hợp đó, dịch vụ sẽ thực hiện một mã địa lý tiêu chuẩn. Tuy nhiên, nếu đối số đầu tiên chứa GLatLng, dịch vụ sẽ thực hiện mã địa lý ngược.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để gỡ lỗi Khóa thời gian chờ vượt quá thời gian chờ trên MySQL?

  2. Có gì mới trong ProxySQL 2.0

  3. Cập nhật nhiều hàng trong một truy vấn MySQL duy nhất

  4. Tại sao MySQL không sử dụng các chỉ mục tối ưu

  5. Làm thế nào để viết một (MySQL) LIMIT trong SQL Server?