dimana saya? - Dapatkan negara

126

Sebuah ponsel android sebenarnya tahu betul di mana itu - tetapi apakah ada cara untuk mengambil negara dengan sesuatu seperti kode negara?

Tidak perlu mengetahui posisi GPS yang tepat - negara ini cukup

Saya pertama kali berpikir untuk menggunakan zona waktu, tetapi sebenarnya saya memerlukan informasi lebih dari itu karena itu membuat perbedaan jika lokasinya New York atau Lima.

Latar belakang pertanyaan: Saya memiliki aplikasi yang menggunakan nilai suhu, dan saya ingin mengatur unit default menjadi Celcius atau Fahrenheit, tergantung pada apakah lokasi AS atau di luar

DonGru
sumber
14
-1: Anda pasti tidak ingin tahu di mana pengguna berada . Anda ingin mengetahui pengaturan lokal pengguna. Jawaban yang diterima menjawab hanya itu, tetapi sebaliknya sama sekali tidak pantas di sini, karena pencarian akan mengarahkan orang-orang di sini yang benar-benar ingin tahu di mana pengguna sebenarnya.
Jan Hudec

Jawaban:

96

Ini akan mengatur kode negara untuk telepon (bahasa ponsel, BUKAN lokasi pengguna):

 String locale = context.getResources().getConfiguration().locale.getCountry(); 

juga dapat mengganti getCountry () dengan getISO3Country () untuk mendapatkan kode ISO 3 huruf untuk negara tersebut. Ini akan mendapatkan nama negara :

 String locale = context.getResources().getConfiguration().locale.getDisplayCountry();

Ini tampaknya lebih mudah daripada metode lain dan bergantung pada pengaturan lokalisasi pada ponsel, jadi jika pengguna AS di luar negeri mereka mungkin masih menginginkan Fahrenheit dan ini akan berhasil :)

Catatan editor : Solusi ini tidak ada hubungannya dengan lokasi telepon. Itu konstan. Saat Anda bepergian ke Jerman, lokal TIDAK akan berubah. Singkatnya: lokal! = Lokasi.

siluman
sumber
83
Ini tidak akan berfungsi di negara-negara di mana Android tidak memiliki Lokal. Misalnya, di Swiss, bahasanya cenderung diatur ke Jerman atau Prancis. Metode ini akan memberi Anda Jerman atau Prancis, bukan Swiss. Lebih baik menggunakan pendekatan LocationManager atau TelephonyManager.
MathewI
5
Tidak bekerja dengan baik. Saya harus membedakan negara pengguna untuk semua negara Amerika Latin, semua telepon pengujian telah kembali ke Amerika Serikat meskipun telepon dalam bahasa Inggris atau Spanyol.
htafoya
21
Ini tidak menjawab dengan judul dari pertanyaan. Saya mungkin memiliki set telepon ke Bahasa Inggris dan sekitar di mana saja di dunia (bahasa ibu saya adalah tidak bahasa Inggris, tapi saya lakukan memiliki set telepon ke (British) Inggris. Namun itu tidak menjawab pertanyaan yang sebenarnya , karena pengguna ingin unit AS jika dia USAian, di mana pun ia benar-benar terjadi menjadi saat ini.
Jan Hudec
2
Bukan solusi yang layak untuk mendapatkan nama Negara
Aamirkhan
2
Ini jawaban yang baik secara umum tetapi hanya mengembalikan negara lokal, bukan negara yang sebenarnya.
dst
138
/**
 * Get ISO 3166-1 alpha-2 country code for this device (or null if not available)
 * @param context Context reference to get the TelephonyManager instance from
 * @return country code or null
 */
public static String getUserCountry(Context context) {
    try {
        final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        final String simCountry = tm.getSimCountryIso();
        if (simCountry != null && simCountry.length() == 2) { // SIM country code is available
            return simCountry.toLowerCase(Locale.US);
        }
        else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable)
            String networkCountry = tm.getNetworkCountryIso();
            if (networkCountry != null && networkCountry.length() == 2) { // network country code is available
                return networkCountry.toLowerCase(Locale.US);
            }
        }
    }
    catch (Exception e) { }
    return null;
}
gak
sumber
14
Hanya berfungsi pada ponsel atau perangkat lain dengan kartu sim. Saat menggunakan pada tablet WIFI, Anda akan mendapatkan nol. Jadi kegunaannya terbatas.
Bram
1
@Bram Inilah yang bisa Anda dapatkan. Jadi ini sebenarnya cukup berguna, masalahnya adalah Anda tidak memiliki sumber data andal lainnya jika Anda memiliki tablet khusus WiFi.
gak
11
Perhatikan bahwa jika pengguna dari AS sedang berlibur di Prancis, getSimCountryIsoakan mengatakan usdan getNetworkCountryIsoakan mengatakanfr
Tim
1
Anda mungkin ingin mengubah toLowerCase()panggilan toUpperCase().
toobsco42
Saya perlu Kode bukan Nama kode; Suka untuk kami +1 bukan AS
Shihab Uddin
67

Gunakan tautan ini http://ip-api.com/json , ini akan memberikan semua informasi sebagai json. Dari json ini Anda bisa mendapatkan negara dengan mudah. Situs ini berfungsi menggunakan IP Anda saat ini, secara otomatis mendeteksi rincian IP dan sendback.

Docs http://ip-api.com/docs/api:json Semoga membantu.

Contoh json

{
  "status": "success",
  "country": "United States",
  "countryCode": "US",
  "region": "CA",
  "regionName": "California",
  "city": "San Francisco",
  "zip": "94105",
  "lat": "37.7898",
  "lon": "-122.3942",
  "timezone": "America/Los_Angeles",
  "isp": "Wikimedia Foundation",
  "org": "Wikimedia Foundation",
  "as": "AS14907 Wikimedia US network",
  "query": "208.80.152.201"
}

Catatan : Karena ini adalah solusi pihak ke-3, hanya gunakan jika yang lain tidak berfungsi.

shine_joseph
sumber
1
Saya tidak yakin ini persis apa yang diinginkan OP, tetapi saya sangat suka jawabannya.
JohnnyLambada
1
Suka jawabannya karena ini akan bekerja pada tablet (tanpa sim) juga. Solusi teleponi hanya berfungsi pada ponsel dengan SIM aktif. Ponsel dual sim adalah skenario masalah lain karena mereka mungkin dari berbagai negara. Jadi mungkin lebih masuk akal untuk mengandalkan solusi IP yang disebutkan di atas.
Manish Kataria
1
Meskipun, seperti yang Anda tunjukkan, ini mungkin bukan pendekatan terbaik untuk masalah, itu sebenarnya memberikan solusi yang valid. +1 dari saya dan terima kasih!
Matteo
1
Selalu buruk menggunakan pihak ketiga, Anda tidak akan pernah tahu seberapa stabilnya di sana. misalnya - Parse.
Nativ
1
tetapi memiliki keterbatasan. sistem mereka akan secara otomatis mencekal alamat IP yang melakukan lebih dari 150 permintaan per menit.
Ram Mandal
62

Sebenarnya saya baru tahu bahwa ada satu lagi cara untuk mendapatkan kode negara, menggunakan metode getSimCountryIso () dari TelephoneManager:

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();

Karena itu adalah kode sim itu juga tidak boleh berubah ketika bepergian ke negara lain.

DonGru
sumber
43
Ini mungkin tidak berfungsi ketika perangkat tidak memiliki kartu SIM, misalnya tablet
thomasdao
38

Pertama, dapatkan LocationManager. Lalu, teleponlah LocationManager.getLastKnownPosition. Kemudian buat GeoCoder dan panggil GeoCoder.getFromLocation. Lakukan ini di utas terpisah !! Ini akan memberi Anda daftar Addressobjek. Panggil Address.getCountryNamedan Anda mendapatkannya.

Perlu diingat bahwa posisi terakhir yang diketahui bisa sedikit basi, jadi jika pengguna baru saja melewati perbatasan, Anda mungkin tidak tahu tentang itu untuk sementara waktu.

EboMike
sumber
Untuk aplikasi ini, mengubah unit default tidak diinginkan ketika memindahkan negara karena preferensi pengguna Celcius atau Fahrenheit tidak akan berubah saat ia berkelana ke tanah baru.
stealthcopter
Saya perlu tahu di negara mana pengguna saya untuk panggilan API. Panggilan mengembalikan lokasi di daerah sekitarnya. Oleh karena itu saya hanya tertarik pada kode negara sebenarnya pengguna saat ini. Hanya untuk memberikan wawasan apa pendekatan yang dibutuhkan untuk itu.
vinzenzweber
Ini sangat di bawah nilai ans, tetapi kenyataannya ini adalah solusi yang paling dapat diandalkan. Sebagian besar ans di atas tidak berfungsi untuk jaringan wifi. Yang disediakan oleh @shine_joseph terlihat bagus tetapi api yang disediakan bukan untuk penggunaan komersial.
Permata
Gunakan dengan hati-hati. Perangkat Anda akan memberi Anda lokasi meskipun tidak ada jaringan, tetapi Geocoder biasanya akan mengembalikan nol untuk array alamat jika wifi tidak aktif, sehingga menimbulkan pengecualian bahwa Anda harus mencoba / menangkap.
Mike Critchley
17

Berikut ini adalah solusi lengkap berdasarkan LocationManager dan sebagai fallback TelephonyManager dan lokasi Penyedia Jaringan. Saya menggunakan jawaban di atas dari @Marco W. untuk bagian fallback (jawaban yang bagus!).

Catatan: kode berisi PreferencesManager, ini adalah kelas pembantu yang menyimpan dan memuat data dari SharedPrefrences. Saya menggunakannya untuk menyelamatkan negara ke S "P, saya hanya mendapatkan negara jika itu kosong. Untuk produk saya, saya tidak terlalu peduli untuk semua kasus tepi (pengguna bepergian ke luar negeri dan sebagainya).

public static String getCountry(Context context) {
    String country = PreferencesManager.getInstance(context).getString(COUNTRY);
    if (country != null) {
        return country;
    }

    LocationManager locationManager = (LocationManager) PiplApp.getInstance().getSystemService(Context.LOCATION_SERVICE);
    if (locationManager != null) {
        Location location = locationManager
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location == null) {
            location = locationManager
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        }
        if (location == null) {
            log.w("Couldn't get location from network and gps providers")
            return
        }
        Geocoder gcd = new Geocoder(context, Locale.getDefault());
        List<Address> addresses;
        try {
            addresses = gcd.getFromLocation(location.getLatitude(),
                    location.getLongitude(), 1);

            if (addresses != null && !addresses.isEmpty()) {
                country = addresses.get(0).getCountryName();
                if (country != null) {
                    PreferencesManager.getInstance(context).putString(COUNTRY, country);
                    return country;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    country = getCountryBasedOnSimCardOrNetwork(context);
    if (country != null) {
        PreferencesManager.getInstance(context).putString(COUNTRY, country);
        return country;
    }
    return null;
}


/**
 * Get ISO 3166-1 alpha-2 country code for this device (or null if not available)
 *
 * @param context Context reference to get the TelephonyManager instance from
 * @return country code or null
 */
private static String getCountryBasedOnSimCardOrNetwork(Context context) {
    try {
        final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        final String simCountry = tm.getSimCountryIso();
        if (simCountry != null && simCountry.length() == 2) { // SIM country code is available
            return simCountry.toLowerCase(Locale.US);
        } else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable)
            String networkCountry = tm.getNetworkCountryIso();
            if (networkCountry != null && networkCountry.length() == 2) { // network country code is available
                return networkCountry.toLowerCase(Locale.US);
            }
        }
    } catch (Exception e) {
    }
    return null;
}
Nativ
sumber
4
Maaf, tetapi jawaban Anda benar-benar perlu ditulis ulang. Kode tersebut mengandung banyak kode yang tidak dapat digunakan.
ichalos
@ichalos atau Anda tidak mengerti logika. Tolong beri saya 1 contoh kode yang tidak digunakan dalam cuplikan ini
Nativ
2
Tentu saja saya kurang memahami logika dan tolong jangan salah mengerti. Saya mengatakan bahwa PipplApp, PrefernecesManager dll bisa saja dihapus dan solusi yang ditawarkan bisa sedikit lebih jelas bagi pembaca.
ichalos
@ichalos tentang PiplApp Saya setuju 100% dengan Anda, saya baru saja menghapusnya
Nativ
Ada country = addresses.get(0).getCountryName();dalam kode Anda, yang akan memasukkan nama lengkap negara ke dalam variabel country. Pada saat yang sama dalam metode getCountryBasedOnSimCardOrNetwork(Context context)Anda mengembalikan kode negara ISO. Saya yakin Anda ingin menulis country = addresses.get(0).getCountryCode();:-)
Firzen
15

Anda dapat menggunakan getNetworkCountryIso()dariTelephonyManager untuk mendapatkan negara tempat telepon saat ini (walaupun tampaknya ini tidak dapat diandalkan di jaringan CDMA).

Dave Webb
sumber
kedengarannya cukup mudah dan bekerja dengan baik di emulator pada contoh pertama - bisakah Anda menjelaskan mengapa itu tidak dapat diandalkan pada jaringan CDMA?
DonGru
ah oke, saya mengerti - karena dokumentasi mengatakan demikian :)
DonGru
Karena aplikasi ini tidak akan menjadi solusi terbaik ketika pengguna bepergian ke luar negeri, unit standar mereka akan berubah. Akan lebih masuk akal untuk memiliki unit default statis berdasarkan pengaturan lokal ponsel, yang tentu saja dapat diubah dalam pengaturan di suatu tempat.
stealthcopter
5
String locale = context.getResources().getConfiguration().locale.getCountry(); 

Sudah ditinggalkan. Gunakan ini sebagai gantinya:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = context.getResources().getConfiguration().getLocales().get(0);
} else {
    locale = context.getResources().getConfiguration().locale;
}
4gus71n
sumber
1
Apakah itu memerlukan izin dan negara mana yang ditunjukkannya?
CoolMind
4

Untuk beberapa perangkat, jika bahasa default disetel berbeda (orang India dapat mengatur Bahasa Inggris (AS))

context.getResources().getConfiguration().locale.getDisplayCountry();

akan memberikan nilai yang salah. Jadi metode ini tidak dapat diandalkan

Selain itu, metode TelephonyManager getNetworkCountryIso () tidak akan berfungsi pada perangkat yang tidak memiliki kartu SIM (tablet WIFI).

Jika suatu perangkat tidak memiliki SIM maka kita dapat menggunakan Time Zone untuk mendapatkan negara. Untuk negara-negara seperti India, metode ini akan berhasil

kode sampel yang digunakan untuk memeriksa negara adalah India atau tidak (id zona waktu: asia / calcutta)

private void checkCountry() {


    TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (telMgr == null)
        return;

    int simState = telMgr.getSimState();

    switch (simState) {
        //if sim is not available then country is find out using timezone id
        case TelephonyManager.SIM_STATE_ABSENT:
            TimeZone tz = TimeZone.getDefault();
            String timeZoneId = tz.getID();
            if (timeZoneId.equalsIgnoreCase(Constants.INDIA_TIME_ZONE_ID)) {
               //do something
            } else {
               //do something
            }
            break;

            //if sim is available then telephony manager network country info is used
        case TelephonyManager.SIM_STATE_READY:

           TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
            if (tm != null) {
                String countryCodeValue = tm.getNetworkCountryIso();
                //check if the network country code is "in"
                if (countryCodeValue.equalsIgnoreCase(Constants.NETWORK_INDIA_CODE)) {
                   //do something
                }

                else {
                   //do something
                }

            }
            break;

    }
}
Batas
sumber
1
ide bagus tapi zona waktu bukan fitur khusus negara kamu tahu kan? Untuk setiap 15 derajat meridian ada zona waktu dll.
Gunhan
3

Menggunakan GPS dengan garis lintang dan bujur, kita bisa mendapatkan kode Negara.

Jika kita menggunakan telepon, itu tidak akan berfungsi jika kita tidak menggunakan kartu sim dan secara lokal, berdasarkan bahasa, itu menunjukkan kode negara dengan cara yang salah.

MainActivity.java:

    GPSTracker gpsTrack;
    public static double latitude = 0;
    public static double longitude = 0;

    gpsTrack = new GPSTracker(TabHomeActivity.this);

        if (gpsTrack.canGetLocation()) {
            latitude = gpsParty.getLatitude();
            longitude = gpsParty.getLongitude();

            Log.e("GPSLat", "" + latitude);
            Log.e("GPSLong", "" + longitude);

        } else {
            gpsTrack.showSettingsAlert();

            Log.e("ShowAlert", "ShowAlert");

        }

        countryCode = getAddress(TabHomeActivity.this, latitude, longitude);

        Log.e("countryCode", ""+countryCode);

   public String getAddress(Context ctx, double latitude, double longitude) {
    String region_code = null;
    try {
        Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
        List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
        if (addresses.size() > 0) {
            Address address = addresses.get(0);


            region_code = address.getCountryCode();


        }
    } catch (IOException e) {
        Log.e("tag", e.getMessage());
    }

    return region_code;
}

GPSTracker.java:

import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.util.Log;

public class GPSTracker extends Service implements LocationListener {

    private final Context mContext;

    // flag for GPS status
    boolean isGPSEnabled = false;

    // flag for network status
    boolean isNetworkEnabled = false;

    // flag for GPS status
    boolean canGetLocation = false;

    Location location; // location
    double latitude; // latitude
    double longitude; // longitude

    // The minimum distance to change Updates in meters
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

    // The minimum time between updates in milliseconds
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

    // Declaring a Location Manager
    protected LocationManager locationManager;

    public GPSTracker(Context context) {
        this.mContext = context;
        getLocation();
    }

    public Location getLocation() {
        try {
            locationManager = (LocationManager) mContext
                    .getSystemService(LOCATION_SERVICE);

            // getting GPS status
            isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);

            // getting network status
            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (!isGPSEnabled && !isNetworkEnabled) {
                // no network provider is enabled
            } else {
                this.canGetLocation = true;
                // First get location from Network Provider
                if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return location;
    }

    /**
     * Stop using GPS listener
     * Calling this function will stop using GPS in your app
     * */
    public void stopUsingGPS(){
        if(locationManager != null){
            locationManager.removeUpdates(GPSTracker.this);
        }
    }

    /**
     * Function to get latitude
     * */
    public double getLatitude(){
        if(location != null){
            latitude = location.getLatitude();
        }

        // return latitude
        return latitude;
    }

    /**
     * Function to get longitude
     * */
    public double getLongitude(){
        if(location != null){
            longitude = location.getLongitude();
        }

        // return longitude
        return longitude;
    }

    /**
     * Function to check GPS/wifi enabled
     * @return boolean
     * */
    public boolean canGetLocation() {
        return this.canGetLocation;
    }



    public void showSettingsAlert() {
        final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                        mContext.startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                        dialog.cancel();
                    }
                });
        final AlertDialog alert = builder.create();
        alert.show();
    }

    @Override
    public void onLocationChanged(Location location) {
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

}

Catatan:

E / kode negara: DALAM

Sunting: Gunakan Penyedia Lokasi Fusi untuk mendapatkan pembaruan lintang dan bujur untuk hasil yang lebih baik.

Steve
sumber
Apa itu gpsParty ()? Ini tidak didefinisikan
Nikola C
-2

Saya menggunakan GEOIP db dan membuat fungsi. Anda dapat mengkonsumsi tautan ini secara langsung http://jamhubsoftware.com/geoip/getcountry.php

{"country":["India"],"isoCode":["IN"],"names":[{"de":"Indien","en":"India","es":"India","fr":"Inde","ja":"\u30a4\u30f3\u30c9","pt-BR":"\u00cdndia","ru":"\u0418\u043d\u0434\u0438\u044f","zh-CN":"\u5370\u5ea6"}]}

Anda dapat mengunduh file autoload.php dan .mmdb dari https://dev.maxmind.com/geoip/geoip2/geolite2/

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$ip_address = $_SERVER['REMOTE_ADDR'];
//$ip_address = '3.255.255.255';

require_once 'vendor/autoload.php';

use GeoIp2\Database\Reader;

// This creates the Reader object, which should be reused across
// lookups.
$reader = new Reader('/var/www/html/geoip/GeoLite2-City.mmdb');

// Replace "city" with the appropriate method for your database, e.g.,
// "country".
$record = $reader->city($ip_address);

//print($record->country->isoCode . "\n"); // 'US'
//print($record->country->name . "\n"); // 'United States'
$rows['country'][] = $record->country->name;
$rows['isoCode'][] = $record->country->isoCode;
$rows['names'][] = $record->country->names;
print json_encode($rows);
//print($record->country->names['zh-CN'] . "\n"); // '美国'
//
//print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
//print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
//
//print($record->city->name . "\n"); // 'Minneapolis'
//
//print($record->postal->code . "\n"); // '55455'
//
//print($record->location->latitude . "\n"); // 44.9733
//print($record->location->longitude . "\n"); // -93.2323
?>
arun-r
sumber