내가 어디 있지? -국가를 얻으십시오


126

안드로이드 모바일은 실제로 그것이 어디에 있는지 잘 알고 있지만 국가 코드와 같은 방법으로 국가를 검색하는 방법이 있습니까?

정확한 GPS 위치를 알 필요가 없습니다- 국가 는 충분합니다

나는 시간대를 처음 사용하려고 생각했지만 실제로는 위치가 뉴욕이나 리마라면 차이가 있기 때문에 그보다 더 많은 정보가 필요합니다.

질문의 배경 : 온도 값을 사용하는 응용 프로그램이 있으며 위치가 미국인지 또는 외부인지에 따라 기본 단위를 섭씨 또는 화씨로 설정하고 싶습니다


14
-1 : 사용자 어디에 있는지 알고 싶지 않습니다 . 사용자의 로캘 설정을 알고 싶습니다. 수락 된 답변은 그에 대한 답변이지만 여기에서는 완전히 부적절합니다. 검색은 실제로 사용자가 실제로 어디에 있는지 알고 싶어하는 사람들을 가리 키기 때문입니다.
Jan Hudec

답변:


96

휴대 전화 의 국가 코드가 설정됩니다 (전화기 언어, 사용자 위치 아님).

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

또한 getCountry ()를 getISO3Country () 로 대체 하여 국가의 3 문자 ISO 코드를 얻을 수 있습니다. 국가 이름 이 표시됩니다 .

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

이것은 다른 방법보다 쉽고 전화의 현지화 설정에 의존하므로 미국 사용자가 해외에있는 경우 여전히 화씨를 원할 것입니다. :)

편집자 주 :이 솔루션은 전화 위치와 관련이 없습니다. 일정합니다. 독일 여행시 로캘은 변경되지 않습니다. 간단히 말해서 : locale! = location.


83
Android에 로캘이없는 국가에서는 작동하지 않습니다. 예를 들어 스위스에서는 언어가 독일어 또는 프랑스어로 설정되어있을 가능성이 있습니다. 이 방법은 스위스가 아닌 독일 또는 프랑스에 제공됩니다. LocationManager 또는 TelephonyManager 접근 방식을 사용하는 것이 좋습니다.
MathewI

5
잘 작동하지 않습니다. 모든 라틴 아메리카 국가의 사용자 국가를 구분해야합니다. 전화가 영어 또는 스페인어로되어 있어도 모든 테스트 전화가 미국을 반환했습니다.
htafoya 2016 년

21
이것은 질문제목대한 답변이 아닙니다 . 나는 영어로 전화 세트가 나의 모국어는 (세계 어디서나 대해있을 수 없는 영어,하지만 난 (영국) 영어로 내 휴대 전화 세트를 가지고있다. 그것은 그러나 실제 질문에 대답 않습니다 , 사용자가 US 단위의 경우를 원하기 때문에 그는 현재 실제로 어디에 있든 USAian입니다
Jan Hudec

2
국가 이름을 얻는 실현 가능한 해결책이 아닙니다
Aamirkhan

2
일반적으로 좋은 대답이지만 실제 국가가 아닌 로케일 국가 만 반환합니다.
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;
}

14
SIM 카드가있는 전화 또는 기타 장치에서만 작동합니다. WIFI 태블릿에서 사용하면 null이 발생합니다. 따라서 그 유용성은 제한적입니다.
Bram

1
@Bram 이것은 당신이 얻을 수있는 전부입니다. 따라서 실제로는 매우 유용합니다. 문제는 WiFi 전용 태블릿을 사용하는 경우 신뢰할 수있는 다른 데이터 소스가 없다는 것입니다.
caw

11
참고 USA에서 사용자가 프랑스에서 휴가에있는 경우, 것을 getSimCountryIso말할 것이다 us하고 getNetworkCountryIso말할 것이다fr

1
toLowerCase()통화를 로 변경할 수 있습니다 toUpperCase().
toobsco42

코드 이름이 아닌 코드가 필요합니다. 미국 +1이 아니라 미국에 대한처럼
Shihab Uddin

67

이 링크 http://ip-api.com/json을 사용하면 모든 정보가 json으로 제공됩니다. 이 json에서 당신은 쉽게 나라를 얻을 수 있습니다. 이 사이트는 현재 IP를 사용하여 작동하며 IP 및 전송 정보를 자동으로 감지합니다.

문서 http://ip-api.com/docs/api:json 도움이 되길 바랍니다.

예 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"
}

참고 : 이것은 타사 솔루션이므로 다른 사람이 작동하지 않는 경우에만 사용하십시오.


1
이것이 OP가 원하는 것이 확실하지는 않지만 어쨌든 대답을 정말로 좋아합니다.
JohnnyLambada

1
정답이없는 태블릿에서도 작동하므로 답변과 같습니다. 전화 통신 솔루션은 시뮬레이션이 활성화 된 전화기에서만 작동합니다. 듀얼 SIM 전화는 다른 국가에서 온 또 다른 문제 시나리오입니다. 따라서 위에서 언급 한 IP 솔루션에 의존하는 것이 더 합리적 일 것입니다.
Manish Kataria

1
지적했듯이 이것이 문제에 대한 최선의 접근 방법이 아닐 수도 있지만 실제로는 유효한 솔루션을 제공합니다. 나에게서 +1하고 감사합니다!
Matteo

1
항상 타사를 사용하는 것은 좋지 않습니다. 얼마나 안정적인지 알 수 없습니다. 예를 들어-파싱.
Nativ

1
그러나 그것은 한계가 있습니다. 시스템은 분당 150 회 이상의 요청을 수행하는 모든 IP 주소를 자동으로 금지합니다.
램 만달

62

실제로 방금 getSimCountryIso () 메소드를 사용하여 국가 코드를 얻는 방법이 하나 더 있음을 알았습니다 TelephoneManager.

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

SIM 코드이기 때문에 다른 국가로 여행 할 때도 변경해서는 안됩니다.


43
장치가 예를 들어, 타블렛, SIM 카드가없는이 힘없는 작업
thomasdao

38

먼저 LocationManager를 가져옵니다. 그런 다음로 전화하십시오 LocationManager.getLastKnownPosition. 그런 다음 지오 코더를 생성하고를 호출하십시오 GeoCoder.getFromLocation. 이것은 별도의 스레드에 있습니다! 그러면 Address객체 목록이 제공 됩니다. 전화 Address.getCountryName하면됩니다

마지막으로 알려진 위치는 약간 오래 될 수 있으므로 사용자가 방금 경계를 넘었다면 잠시 동안 그 위치를 알지 못할 수도 있습니다.


이 응용 프로그램의 경우 사용자가 섭씨 또는 화씨의 선호도가 새로운 땅으로 모험을 할 때 변경되지 않으므로 국가를 이동할 때 기본 단위를 변경하지 않아도됩니다.
stealthcopter

사용자가 어느 국가에서 API 호출을해야하는지 알아야합니다. 호출은 주변 지역의 위치를 ​​반환합니다. 따라서 현재 사용자가 속한 실제 국가 코드에만 관심이 있습니다. 위의 접근법이 필요한 것이 무엇인지 통찰하십시오.
vinzenzweber

이것은 등급이 매우 낮지 만 사실은 이것이 가장 신뢰할만한 솔루션이라는 것입니다. 위의 답변 중 대부분은 Wi-Fi 네트워크에서 작동하지 않습니다. @shine_joseph가 제공 한 것이 좋아 보이지만 제공된 api는 상업용이 아닙니다.
Gem

주의해서 사용하십시오. 기기는 네트워크에 연결되어 있지 않아도 위치를 제공하지만 지오 코더는 Wi-Fi가 꺼져 있으면 일반적으로 주소 배열에 대해 null을 반환하므로 시도 / 캐치가 필요하다는 예외가 발생합니다.
Mike Critchley

17

다음은 LocationManager를 기반으로하며 TelephonyManager 및 네트워크 제공자의 위치를 ​​대체하는 완벽한 솔루션입니다. 대체 부분에 @Marco W.의 위의 답변을 사용했습니다 (자체적으로 좋은 답변입니다!).

참고 :이 코드에는 PreferencesManager가 포함되어 있으며 SharedPrefrences에서 데이터를 저장하고로드하는 도우미 클래스입니다. 국가를 S "P에 저장하기 위해 사용하고 있습니다. 비어있는 경우에만 국가를 가져옵니다. 내 제품의 경우 모든 에지 케이스 (사용자가 해외로 여행하는 등)에 관심이 없습니다.

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

4
죄송하지만 답변을 다시 작성해야합니다. 코드에 사용할 수없는 코드가 많이 있습니다.
ichalos

@ichalos 또는 당신은 논리를 이해하지 못했습니다. 이 스 니펫에서 사용되지 않은 코드의 예를 하나주세요
Nativ

2
물론 나는 논리를 이해하지 못하고 잘못 받아들이지 마십시오. PipplApp, PrefernecesManager 등이 제거되었을 수 있으며 제공된 솔루션이 독자에게 좀 더 명확 할 수 있습니다.
ichalos

PiplApp에 대한 @ichalos 나는 당신과 100 % 동의, 난 그냥 그것을 제거
Nativ

country = addresses.get(0).getCountryName();변수로 국가의 전체 이름을 넣어 것입니다 코드에 country. 동시에 방법 getCountryBasedOnSimCardOrNetwork(Context context)으로 국가의 ISO 코드를 반환합니다. 나는 당신이 country = addresses.get(0).getCountryCode();:-) 를 쓰고 싶었다고 생각합니다
Firzen

15

당신은 사용할 수 있습니다 getNetworkCountryIso()에서TelephonyManager (분명히이 CDMA 네트워크에서 신뢰할 수 있지만) 전화가 현재 나라를 얻을 수 있습니다.


그것은 아주 직설적으로 들리고 처음에는 에뮬레이터에서 잘 작동했습니다. 왜 CDMA 네트워크에서 신뢰할 수 없는지 설명 할 수 있습니까?
DonGru

아, 알았어-문서가 그렇게 말하기 때문에 :)
DonGru

응용 프로그램으로 인해 사용자가 해외 여행을 할 때 기본 단위가 변경되므로 최상의 솔루션이 아닙니다. 전화 로케일 설정을 기반으로 정적 기본 단위를 갖는 것이 더 합리적이며, 그런 다음 설정에서 변경 될 수 있습니다.
stealthcopter

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

더 이상 사용되지 않습니다. 대신 이것을 사용하십시오 :

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = context.getResources().getConfiguration().getLocales().get(0);
} else {
    locale = context.getResources().getConfiguration().locale;
}

1
허가가 필요하고 어떤 국가를 보여줍니까?
CoolMind

4

일부 장치의 경우 기본 언어가 다르게 설정된 경우 (인도어는 영어 (미국)를 설정할 수 있음)

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

잘못된 값을 줄 것이므로이 방법은 신뢰할 수 없습니다.

또한 TelephonyManager의 getNetworkCountryIso () 메소드는 SIM 카드 (WIFI 태블릿)가없는 장치에서는 작동하지 않습니다.

기기에 SIM이없는 경우 시간대를 사용하여 국가를 가져올 수 있습니다. 인도와 같은 국가에서는이 방법이 효과가 있습니다.

국가를 확인하는 데 사용되는 샘플 코드는 인도인지 여부 (시간대 ID : 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;

    }
}

1
좋은 생각이지만 시간대는 당신이 알고있는 국가 별 기능이 아닙니다. 자오선 15
도마 다

3

위도와 경도가있는 GPS를 사용하여 국가 코드를 얻을 수 있습니다.

전화를 사용하는 경우 언어를 기반으로 SIM 카드를 사용하지 않거나 로캘로 언어를 사용하면 국가 코드가 잘못 표시됩니다.

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

}

로그:

E / 국가 코드 : IN

편집 : Fused Location Provider 를 사용 하여 더 나은 결과를 위해 위도와 경도를 업데이트하십시오.


gpsParty () 란 무엇입니까? 그것은 정의되지 않았습니다
Nikola C

-2

GEOIP db를 사용하여 함수를 만들었습니다. 이 링크를 직접 사용할 수 있습니다 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"}]}

https://dev.maxmind.com/geoip/geoip2/geolite2/ 에서 autoload.php 및 .mmdb 파일을 다운로드 할 수 있습니다.

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
?>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.