어, 나는 어디에?


26

아뇨! 나는 큰 숲에 갇혀 있습니다 (좋아요,하지만 그냥 가정하십시오). 그리고 나는 내가 어디에 있는지 모른다!

고맙게도 노트북을 가져 왔습니다. 그러나 '지도'를 검색했을 때 '결과 없음'이라고 말했으며 마지막 수단으로 이것을 묻습니다.

내 위치의 경도와 위도를 두 가지 숫자 형식으로 출력하는 프로그램을 만드십시오. any two number format다음을 포함합니다 :

  • 튜플.
  • 경도와 위도를 포함한 문자열입니다.
  • JSON 객체.
  • 기타..

모든 API 또는 라이브러리를 사용할 수 있습니다. 즉, Google지도 등을 쿼리 할 수 ​​있습니다 (API를 휴지통에 넣지 않은 것 같습니다 : \)


19
PowerShell은이 gl에 대한 Get-Location슬프게도 나는 생각하지 않는다, C:\Users\Connor당신은 매우 많은 숲을 탈출하는 데 도움이됩니다.
colsw

C : \ Users \ @Connor> sudo yes
Matthew Roh

답변:


72

Mathematica, 4 바이트

어, 나는 어디?

Here

로 평가합니다 GeoPosition[{latitude, longitude}].


5
o_O Mathematica는 이것을 위해 내장되어 있습니까?
Matthew Roh

4
@SIGSEGV 물론 ... (스 니펫 # 4)
Martin Ender

33
Mathematica에는 모든 것이 내장되어 있습니다
Skidsdev

10
더 좋은 방법 : 명령 Sunset[Here] - Now은 일몰까지의 시간을 올바르게 반환합니다.
Greg Martin

4
나는 질문보다 더 많은 표를 얻은 답변을 보게되어 기쁘게 생각합니다. 축하합니다 👏👏👏
Matthew Roh

11

자바 스크립트 (ES6), 89 82 바이트

navigator.geolocation.watchPosition(x=>alert([(y=x.coords).latitude,y.longitude]))

온라인으로 사용해보십시오! (어떤 이유로 스 니펫에서 작동하지 않았습니다).

설명

navigatorobject는 BOM 의 일부입니다 . geolocation의 속성이며 사용자의 지리적 위치 데이터를 포함하는 개체이기도합니다. 객체 watchPosition()의 방법입니다 geolocation. 지리적 위치 데이터를 검색 한 후 실행되는 콜백 함수를받습니다. 콜백 함수는 x=>alert((y=x.coords).latitude+","+y.longitude)객체에 걸리는 익명 (람다) 함수 xalert()S는 latitudelongitude특성 x.coords콤마로 분리된다. 콜백 함수가 호출 될 때 (즉, 지리적 위치 데이터를 검색 한 후) 객체 x가 콜백 함수로 전달됩니다 watchPosition().


참고 : GPS가 사용 가능한 경우 지리적 위치 데이터는 GPS 기반이며 그렇지 않은 경우 IP를 기반으로합니다.


2
watchPosition대신 getCurrentPosition5 바이트 를 절약합니다. alert([(y=x.coords).latitude,y.longitude])2 개 더 절약
Johan Karlsson

1 자 더 짧고 오류가 발생 함 :for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118

3
너무 긴 속성 이름에 의존하면서 JS가 경쟁력을 가질 수있는 경우는 드물다.
Shaggy

@JohanKarlsson 감사합니다! 그것을 구현했습니다!
Arjun

@Shaggy 사실입니다.
Arjun

8

요청 파이썬, 101 (100) 75 바이트

@ КириллМалышев 덕분에 4 바이트 절약

@Rod 덕분에 21 바이트 절약

from requests import*;print(get('http://su0.ru/auls').text.split(',')[5:7])

이것이 파이썬 2 인 경우 괄호를 제거하여 1 바이트를 절약 할 수 있습니다
Wondercricket

아마 짧은 URL을 사용하는 것이 좋습니다? 예를 들어, su0.ru/auls 입니다. 따라서 4 바이트를 절약 할 수 있습니다.
Кирилл Малышев

이 형식을 모두 사용할 필요 from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])는 없으며 충분해야합니다.
Rod

링크가 끊어졌습니다! URL 단축기를 사용하려면 기존의 단축기를 사용하는 것이 가장 좋습니다.
Jakob

5

PowerShell, 130 바이트

Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).Start();for(;($b=$a|% Po*n|% L*)|% I*){}$b|select L*e

언 골프 드 :

Add-Type -AssemblyName System.Device #Required to access System.Device.Location namespace
$GeoWatcher = New-Object System.Device.Location.GeoCoordinateWatcher #Create the required object
$GeoWatcher.Start() #Begin resolving current locaton
whille ($GeoWatcher.Status -ne "Ready") do { sleep -Milliseconds 100 } #Wait for discovery.
$GeoWatcher.Position.Location | Select Latitude,Longitude #Select the relevent results.

다음과 같이 반환됩니다.

PS C:\users\sweeneyc\Desktop> Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).Start();for(;($b=$a|% Po*n|% L*)|% I*){}$b|select L*e

        Latitude         Longitude
        --------         ---------
53.4064177191653 -6.36202495701332

이 작업을 수행 할 수있는 방법이 있지만 그렇게 예쁘지는 않습니다.

보너스 : 현재 위치에서 Google지도를 엽니 다.

Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).Start();for(;($b=$a|% Po*n|% L*)|% I*){};saps "https://www.google.ie/maps/@$($b.Latitude),$($b.Longitude)z"

를 사용하여 3 바이트를 절약 할 수 TryStart있지만 true파이프 라인에 a 를 출력하고 그것을 억제하는 데 더 많은 비용이 듭니다.

Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).TryStart($true,[int]9e8);$a|% Po*n|% L*|select L*e

PowerShell (비경쟁), 44 바이트

(irm freegeoip.net/xml).Response|select *ude

PowerShell에는 '현재 위치'에 대한 내부 기본 제공 기능이 없으므로 외부 서비스를 사용합니다. IP 기반 지리적 위치이므로 실제 위치를 거의 반환하지 않으며 ISP의 '기본'위치를 반환합니다. VPN을 통해이 지점이 어디든지 존재합니다.

무선 맥 주소 지리 위치 측정 방법으로 작동하기 위해 Google지도 API를 얻으려고 (골프 연습이 아닌) 시도했지만 정확하지는 않습니다.

결과의 부정확성으로 인해 비경쟁으로 표시되었습니다.

PS C:\Users\sweeneyc> (irm freegeoip.net/xml).Response|select *ude
Latitude Longitude
-------- ---------
53.3472  -6.2439

이것은 Central Dublin, Ireland검색 할 때 표시 되지만 반환 된 지점에서 약 8 마일 떨어진 도심에서 약간 떨어져 있습니다.


C #에서이 GeoCoordinateWatcherTryStart상태가 될 때 반환처럼 어떤 모습을 시도 할 수 방법 Ready대신에 반복의를. 그 방법이 분명히 가능하다면.
TheLethalCoder

1
@TheLethalCoder는 내가 처음으로 보았고 예제에 추가했으며 전체적으로 3 바이트 만 절약하지만 true파이프를 lat / long을 출력하기 전에 파이프 라인에 덤프하고 출력 될 때 사양을 위반한다고 생각합니다. .
colsw

@TheLethalCoder 수 실행 가능하게 온 바이트 (들)을 저장 [int]9e8당신이 제한 시간을 설정 부분 TryStart하지만 난 함께 작동하도록 그것을 얻을 수 없습니다 9999999[int]9e8추가 9. 추가로 동일하다
colsw

2

(비경쟁) Angolf , 110 107 바이트

❦™navigator.geolocation.getCurrentPosition#x=>™alert##y=x.coords▷.latitude+","+y.longitude▷▷●
    ❦                                   Define an IIFE
       ™                                Get the scope
         navigator                      Get JavaScript's navigator object from the scope
             geolocation                Get the geolocation property of the navigator object
                 getCurrentPosition     Get the current position and execute a function
                     x=>                Define a function with x as a parameter
                         ™              Get the scope
                            alert       Call alert and alert the following string:
                         #y=x.coords▷ Define y with the value of the coordinates of x
                         latitude       Get y's latitude
                         +","           Append "," to the string
                         +y.longitude   Append the longitude to the string
    ●                                   Close the IIFE and call it with the scope

1
사이트에 오신 것을 환영합니다! Angolf에 대한 정보를 찾을 수 없습니다. 웹 사이트를 연결 하시겠습니까?
ETHproductions


1
사이트에 오신 것을 환영합니다! 이보다 오래된 링크가 있습니까? 그렇지 않은 경우, 언어는 도전보다 새로운 것으로 간주됩니다. 제목에서 ( 경쟁이 아닌) 도전 과제보다 새로운 언어로 답변을 표시하는 것이 관례입니다.
Destructible Lemon

나는 해주기 3 개월 Angolf 했어하지만 전에 링크가 없었로서 나는 지금 GitHub의에 업로드
thatoneuser

@thatoneuser 불행히도이 사이트에서 언어는 "경쟁 중"으로 표시되도록 게시되어 있어야합니다. 비경쟁으로 표시하십시오 (이것은 참여하고 참여율을 높일 수 있음을 의미하지만 허용 된 틱 마크로 간주됩니다)
Rohan Jhunjhunwala

0

C #, 132 바이트

_=>{var w=new System.Device.Location.GeoCoordinateWatcher();w.Start();var c=w.Position.Location;return c.Longitude+","+c.Latitude;};

0

Excel VBA (Windows, Office 2016+ 만 해당), 278 272 바이트

Microsoft.Mashup.OleDb.1공급자 사용을 위해 Windows, Office 2016+로 제한

sub입력을받지 않고 추가 정보를 포함 하여 현재 위치Excel.ListObject유형이 지정된 테이블 로 출력하는 전체 루틴 .

Sub a
ThisWorkbook.Queries.Add"x","let S=Json.Document(Web.Contents(""su0.ru/auls""))in S
With Sheet1.ListObjects.Add(0,"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=x",,,[A1]).QueryTable
.CommandText="SELECT * FROM [x]
.Refresh
End With
End Sub

명백한 이유로 제외 된 예제 출력.

[Sheet1]오버 사용을위한 -2 바이트Sheets(1)


0

스위프트 4 , 125117 96 바이트

불행히도 로컬에서만 테스트 할 수 있습니다.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.