Đặt vị trí trong Trình mô phỏng iPhone


124

Làm cách nào để tôi có thể đặt vị trí (vì nó được chọn trong các dịch vụ CoreLocation) trong Trình mô phỏng iPhone?


Tôi đã thêm một phương thức cho Xcode 6. stackoverflow.com/questions/19694205/…
Ohmy

Có ai quản lý để làm cho cái này hoạt động trong React native, simulator không?
Nikos

Với iOS 13 beta 2, tôi chỉ có thể thấy các tùy chọn "Không có" và "Tùy chỉnh". Có ai khác có vấn đề này? stackoverflow.com/q/56733625/1364053
nr5,

Câu trả lời:


122

Kể từ iOS 5, trình mô phỏng có vị trí có thể định cấu hình.

Trong menu Gỡ lỗi, mục nhập cuối cùng là "Vị trí"; điều này cung cấp cho bạn một menu phụ với:

  • không ai
  • Vị trí tùy chỉnh
  • Cửa hàng Apple
  • táo
  • Đi xe đạp thành phố
  • City Run
  • Lái xe trên xa lộ

Vị trí Tùy chỉnh cho phép bạn nhập giá trị Vĩ độ / Dài. Đi xe đạp, City Run và Freeway Drive là mô phỏng một địa điểm di chuyển (tất nhiên là ở Cupertino).

Tất nhiên, điều này không giúp ích gì cho việc gỡ lỗi cho iOS 4 (hoặc cũ hơn); nhưng đó là một cải tiến rõ ràng!


trình đơn gỡ lỗi trong trình mô phỏng IOS ở đâu?
Lucky_girl

1
công trình này nhưng nó cho debug menu trên giả lập không phải là người trên xcode
Lance Samaria

2
Đối với trình mô phỏng iOS, nó hiện nằm trong "Tính năng"
J. Đã thấy

85
  1. Chạy dự án trong iPhone Simulator
  2. Tạo trong tệp TextEdit tệp sau đây, gọi là MyOffice chẳng hạn. Đặt phần mở rộng là .gpx nhập mô tả hình ảnh ở đây

    <?xml version="1.0"?> <gpx version="1.0" creator="MyName"> <wpt lat="53.936166" lon="27.565370"> <name>MyOffice</name> </wpt> </gpx>

  3. Chọn trong Xcode tại khu vực Mô phỏng Add GPX File to Project...nhập mô tả hình ảnh ở đây

  4. Thêm tệp đã tạo từ menu vào dự án.
  5. Bây giờ bạn có thể thấy vị trí của mình trong khu vực Mô phỏng:nhập mô tả hình ảnh ở đây

TextEdit không lưu tệp .gpx. Tôi lam thê nao?

2
lưu nó dưới dạng .txt (hoặc .xml) và sau đó đổi tên để .GPX
berili

7
Cảm ơn! Rất dễ dàng, hoạt động tuyệt vời. Trong trường hợp bất kỳ ai khác sử dụng tệp này thì tệp GPX mẫu ở dạng văn bản để bạn có thể sao chép và dán tệp đó: <? Xml version = "1.0"?> <Gpx version = "1.0" create = "Name"> <wpt lat = "" lon = ""> <name> Văn phòng </name> </wpt> </gpx>
RyanG 20/12/12

1
Bạn đã lưu ngày "+1" của tôi.
SAHIL

3
chúng ta có thể bao gồm thời gian trong này? Tôi muốn thử nghiệm phương pháp startMonitoringSignificantLocationChanges
Durgaprasad

17

Trong cuộc gọi lại ủy quyền của mình, tôi kiểm tra xem liệu tôi có đang chạy trong trình mô phỏng ( #if TARGET_ IPHONE_SIMULATOR) hay không và nếu có, tôi cung cấp Lat / Long của riêng mình, đã được tra cứu trước. Theo hiểu biết của tôi, không còn cách nào khác.


3
Bắt đầu với Xcode 4.2, bây giờ có một cách trong Debugtrình đơn trên trình mô phỏng bằng cách sử dụng Locationmục nhập cho phép đặt vị trí tùy chỉnh hoặc chọn từ một số chuyến đi và địa điểm được xác định trước.
progrmr

17

trong menu Trình mô phỏng iOS, đi tới Gỡ lỗi -> Vị trí -> Vị trí tùy chỉnh. Ở đó bạn có thể đặt vĩ độ và kinh độ và thử nghiệm ứng dụng cho phù hợp. Điều này hoạt động với mapkit và cả CLLocationManager.


10

XCode 11.3 trở về trước:

Debug -> Location -> Custom Location

nhập mô tả hình ảnh ở đây

XCode 11.4+:

Features -> Location -> Custom Location

nhập mô tả hình ảnh ở đây

Để biết bạn có phiên bản XCode nào

$ /usr/bin/xcodebuild -version

5

Trước iOS 5, bạn có thể làm điều đó bằng mã:

Tôi sử dụng đoạn mã này ngay trước @implementationlớp học mà tôi cần dữ liệu vị trí và tiêu đề giả của mình.

#if (TARGET_IPHONE_SIMULATOR)
@interface MyHeading : CLHeading
    -(CLLocationDirection) magneticHeading;
    -(CLLocationDirection) trueHeading;
@end

@implementation MyHeading
    -(CLLocationDirection) magneticHeading { return 90; }
    -(CLLocationDirection) trueHeading { return 91; }
@end

@implementation CLLocationManager (TemporaryLocationFix)
- (void)locationFix {
    CLLocation *location = [[CLLocation alloc] initWithLatitude:55.932 longitude:12.321];
    [[self delegate] locationManager:self didUpdateToLocation:location fromLocation:nil];

    id heading  = [[MyHeading alloc] init];
    [[self delegate] locationManager:self didUpdateHeading: heading];
}

-(void)startUpdatingHeading {
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}

- (void)startUpdatingLocation {
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}
@end
#endif

Sau khi iOS 5 chỉ cần đưa một tệp GPX vào dự án của bạn như thế này để vị trí được cập nhật liên tục Hillerød.gpx:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="55.93619760" lon="12.29131930"></wpt>
    <wpt lat="55.93625770" lon="12.29108330"></wpt>
    <wpt lat="55.93631780" lon="12.29078290"></wpt>
    <wpt lat="55.93642600" lon="12.29041810"></wpt>
    <wpt lat="55.93653420" lon="12.28998890"></wpt>
    <wpt lat="55.93660630" lon="12.28966710"></wpt>
    <wpt lat="55.93670240" lon="12.28936670"></wpt>
    <wpt lat="55.93677450" lon="12.28921650"></wpt>
    <wpt lat="55.93709900" lon="12.28945250"></wpt>
    <wpt lat="55.93747160" lon="12.28949540"></wpt>
    <wpt lat="55.93770000" lon="12.28966710"></wpt>
    <wpt lat="55.93785620" lon="12.28977440"></wpt>
    <wpt lat="55.93809660" lon="12.28988170"></wpt>
    <wpt lat="55.93832490" lon="12.28994600"></wpt>
    <wpt lat="55.93845710" lon="12.28996750"></wpt>
    <wpt lat="55.93856530" lon="12.29007480"></wpt>
    <wpt lat="55.93872150" lon="12.29013910"></wpt>
    <wpt lat="55.93886570" lon="12.28975290"></wpt>
    <wpt lat="55.93898590" lon="12.28955980"></wpt>
    <wpt lat="55.93910610" lon="12.28919500"></wpt>
    <wpt lat="55.93861330" lon="12.28883020"></wpt>
    <wpt lat="55.93845710" lon="12.28868000"></wpt>
    <wpt lat="55.93827680" lon="12.28850840"></wpt>
    <wpt lat="55.93809660" lon="12.28842250"></wpt>
    <wpt lat="55.93796440" lon="12.28831520"></wpt>
    <wpt lat="55.93780810" lon="12.28810070"></wpt>
    <wpt lat="55.93755570" lon="12.28790760"></wpt>
    <wpt lat="55.93739950" lon="12.28775730"></wpt>
    <wpt lat="55.93726730" lon="12.28767150"></wpt>
    <wpt lat="55.93707500" lon="12.28760710"></wpt>
    <wpt lat="55.93690670" lon="12.28734970"></wpt>
    <wpt lat="55.93675050" lon="12.28726380"></wpt>
    <wpt lat="55.93649810" lon="12.28713510"></wpt>
    <wpt lat="55.93625770" lon="12.28687760"></wpt>
    <wpt lat="55.93596930" lon="12.28679180"></wpt>
    <wpt lat="55.93587310" lon="12.28719940"></wpt>
    <wpt lat="55.93575290" lon="12.28752130"></wpt>
    <wpt lat="55.93564480" lon="12.28797190"></wpt>
    <wpt lat="55.93554860" lon="12.28833670"></wpt>
    <wpt lat="55.93550050" lon="12.28868000"></wpt>
    <wpt lat="55.93535630" lon="12.28900190"></wpt>
    <wpt lat="55.93515200" lon="12.28936670"></wpt>
    <wpt lat="55.93505580" lon="12.28958120"></wpt>
    <wpt lat="55.93481550" lon="12.29001040"></wpt>
    <wpt lat="55.93468320" lon="12.29033230"></wpt>
    <wpt lat="55.93452700" lon="12.29063270"></wpt>
    <wpt lat="55.93438280" lon="12.29095450"></wpt>
    <wpt lat="55.93425050" lon="12.29121200"></wpt>
    <wpt lat="55.93413040" lon="12.29140520"></wpt>
    <wpt lat="55.93401020" lon="12.29168410"></wpt>
    <wpt lat="55.93389000" lon="12.29189870"></wpt>
    <wpt lat="55.93372170" lon="12.29239220"></wpt>
    <wpt lat="55.93385390" lon="12.29258530"></wpt>
    <wpt lat="55.93409430" lon="12.29295010"></wpt>
    <wpt lat="55.93421450" lon="12.29320760"></wpt>
    <wpt lat="55.93433470" lon="12.29333630"></wpt>
    <wpt lat="55.93445490" lon="12.29350800"></wpt>
    <wpt lat="55.93463520" lon="12.29374400"></wpt>
    <wpt lat="55.93479140" lon="12.29410880"></wpt>
    <wpt lat="55.93491160" lon="12.29419460"></wpt>
    <wpt lat="55.93515200" lon="12.29458090"></wpt>
    <wpt lat="55.93545250" lon="12.29494570"></wpt>
    <wpt lat="55.93571690" lon="12.29505300"></wpt>
    <wpt lat="55.93593320" lon="12.29513880"></wpt>
    <wpt lat="55.93617360" lon="12.29522460"></wpt>
    <wpt lat="55.93622170" lon="12.29537480"></wpt>
    <wpt lat="55.93713510" lon="12.29505300"></wpt>
    <wpt lat="55.93776000" lon="12.29378700"></wpt>
    <wpt lat="55.93904600" lon="12.29531040"></wpt>
    <wpt lat="55.94004350" lon="12.29552500"></wpt>
    <wpt lat="55.94023570" lon="12.29561090"></wpt>
    <wpt lat="55.94019970" lon="12.29591130"></wpt>
    <wpt lat="55.94017560" lon="12.29629750"></wpt>
    <wpt lat="55.94017560" lon="12.29670520"></wpt>
    <wpt lat="55.94017560" lon="12.29713430"></wpt>
    <wpt lat="55.94019970" lon="12.29754200"></wpt>
    <wpt lat="55.94024780" lon="12.29816430"></wpt>
    <wpt lat="55.94051210" lon="12.29842180"></wpt>
    <wpt lat="55.94084860" lon="12.29820720"></wpt>
    <wpt lat="55.94105290" lon="12.29799270"></wpt>
    <wpt lat="55.94123320" lon="12.29777810"></wpt>
    <wpt lat="55.94140140" lon="12.29749910"></wpt>
    <wpt lat="55.94142550" lon="12.29726310"></wpt>
    <wpt lat="55.94147350" lon="12.29687690"></wpt>
    <wpt lat="55.94155760" lon="12.29619020"></wpt>
    <wpt lat="55.94161770" lon="12.29576110"></wpt>
    <wpt lat="55.94148550" lon="12.29531040"></wpt>
    <wpt lat="55.94093270" lon="12.29522460"></wpt>
    <wpt lat="55.94041600" lon="12.29518170"></wpt>
    <wpt lat="55.94056020" lon="12.29398010"></wpt>
    <wpt lat="55.94024780" lon="12.29352950"></wpt>
    <wpt lat="55.94001940" lon="12.29335780"></wpt>
    <wpt lat="55.93992330" lon="12.29325050"></wpt>
    <wpt lat="55.93969490" lon="12.29299300"></wpt>
    <wpt lat="55.93952670" lon="12.29277840"></wpt>
    <wpt lat="55.93928630" lon="12.29260680"></wpt>
    <wpt lat="55.93915410" lon="12.29232780"></wpt>
    <wpt lat="55.93928630" lon="12.29202740"></wpt>
    <wpt lat="55.93933440" lon="12.29174850"></wpt>
    <wpt lat="55.93947860" lon="12.29116910"></wpt>
    <wpt lat="55.93965890" lon="12.29095450"></wpt>
    <wpt lat="55.94001940" lon="12.29061120"></wpt>
    <wpt lat="55.94041600" lon="12.29084730"></wpt>
    <wpt lat="55.94076450" lon="12.29101890"></wpt>
    <wpt lat="55.94080060" lon="12.29065410"></wpt>
    <wpt lat="55.94086060" lon="12.29031080"></wpt>
    <wpt lat="55.94092070" lon="12.28990310"></wpt>
    <wpt lat="55.94099280" lon="12.28975290"></wpt>
    <wpt lat="55.94119710" lon="12.28986020"></wpt>
    <wpt lat="55.94134130" lon="12.28998890"></wpt>
    <wpt lat="55.94147350" lon="12.29007480"></wpt>
    <wpt lat="55.94166580" lon="12.29003190"></wpt>
    <wpt lat="55.94176190" lon="12.28938810"></wpt>
    <wpt lat="55.94183400" lon="12.28893750"></wpt>
    <wpt lat="55.94194220" lon="12.28850840"></wpt>
    <wpt lat="55.94199030" lon="12.28835820"></wpt>
    <wpt lat="55.94215850" lon="12.28859420"></wpt>
    <wpt lat="55.94250700" lon="12.28883020"></wpt>
    <wpt lat="55.94267520" lon="12.28893750"></wpt>
    <wpt lat="55.94284350" lon="12.28902330"></wpt>
    <wpt lat="55.94304770" lon="12.28915210"></wpt>
    <wpt lat="55.94325200" lon="12.28925940"></wpt>
    <wpt lat="55.94348030" lon="12.28953830"></wpt>
    <wpt lat="55.94366060" lon="12.28966710"></wpt>
    <wpt lat="55.94388890" lon="12.28975290"></wpt>
    <wpt lat="55.94399700" lon="12.28994600"></wpt>
    <wpt lat="55.94379280" lon="12.29065410"></wpt>
    <wpt lat="55.94364860" lon="12.29095450"></wpt>
    <wpt lat="55.94350440" lon="12.29127640"></wpt>
    <wpt lat="55.94340820" lon="12.29155540"></wpt>
    <wpt lat="55.94331210" lon="12.29198450"></wpt>
    <wpt lat="55.94315590" lon="12.29269260"></wpt>
    <wpt lat="55.94310780" lon="12.29318610"></wpt>
    <wpt lat="55.94301170" lon="12.29361530"></wpt>
    <wpt lat="55.94292760" lon="12.29408740"></wpt>
    <wpt lat="55.94290350" lon="12.29436630"></wpt>
    <wpt lat="55.94287950" lon="12.29453800"></wpt>
    <wpt lat="55.94283140" lon="12.29533190"></wpt>
    <wpt lat="55.94274730" lon="12.29606150"></wpt>
    <wpt lat="55.94278340" lon="12.29621170"></wpt>
    <wpt lat="55.94280740" lon="12.29649060"></wpt>
    <wpt lat="55.94284350" lon="12.29679100"></wpt>
    <wpt lat="55.94284350" lon="12.29734890"></wpt>
    <wpt lat="55.94308380" lon="12.29837890"></wpt>
    <wpt lat="55.94315590" lon="12.29852910"></wpt>
    <wpt lat="55.94263920" lon="12.29906550"></wpt>
    <wpt lat="55.94237480" lon="12.29910850"></wpt>
    <wpt lat="55.94220660" lon="12.29915140"></wpt>
    <wpt lat="55.94208640" lon="12.29902260"></wpt>
    <wpt lat="55.94196620" lon="12.29887240"></wpt>
    <wpt lat="55.94176190" lon="12.29794970"></wpt>
    <wpt lat="55.94156970" lon="12.29760640"></wpt>
</gpx>

Tôi sử dụng GPSies.com để tạo tệp cơ sở cho dữ liệu gpx. Tuy nhiên, cần phải dọn dẹp một chút.

Kích hoạt bằng cách chạy trình mô phỏng và chọn tệp của bạn


(nguồn: lâu đàiandersen.dk )


4

Mở ứng dụng Trình mô phỏng iOS từ Trình đơn gỡ lỗi -> Vị trí ->

  1. không ai
  2. Vị trí tùy chỉnh
  3. Cửa hàng Apple ...

4

Bạn có thể dễ dàng chia sẻ bất kỳ vị trí mong muốn nào từ ứng dụng Bản đồ macOS với trình mô phỏng Xcode .

  1. Từ Xcode, chạy ứng dụng trong trình mô phỏng như bạn thường làm.
  2. Mở ứng dụng bản đồ trên macOS (để thuận tiện, tôi thường tạo một Màn hình nền mới, nơi tôi có cả trình mô phỏng và ứng dụng bản đồ).
  3. Bên trong bản đồ (macOS), nhấp và giữ vào bất kỳ điểm nào trên bản đồ hoặc tìm kiếm một địa điểm để bản đồ vẽ ghim ở nơi bạn cần.
  4. Nhấp vào ghim, sau đó nhấp vào biểu tượng thông tin (i) ( xem hình ảnh ).
  5. Ở phía trên bên phải của chế độ xem thông tin, hãy nhấp vào biểu tượng chia sẻ.
  6. Chia sẻ vị trí với trình mô phỏng ( xem hình ảnh ).
  7. Xác nhận và tận hưởng :)

Điều này cho phép bạn nhanh chóng kiểm tra một số vị trí, hiểu được vị trí địa lý ở đâu (ví dụ: để kiểm tra cấu trúc địa lý) và quyết định nơi tiếp theo sẽ đi trong thời gian chạy (ví dụ: để gỡ lỗi và tinh chỉnh nội dung).

Đã kiểm tra điều này trên MacOS Catalina 10.15.4 và Xcode 11.4.


3

Những người tốt bụng tại FutureTap đã cung cấp FTLocationSimulator miễn phí tại GitHub . Nó cho phép bạn chuẩn bị một tuyến đường thử nghiệm bằng cách sử dụng Google Earth, sau đó yêu cầu trình mô phỏng cung cấp các tọa độ này cho ứng dụng của bạn.

Tôi đã viết một bài đăng trên blog về cách sử dụng FTLocationSimulator để dễ dàng chuyển đổi giữa nhiều tuyến đường trong quá trình thử nghiệm các tính năng vị trí.


3

bạn có thể thêm tệp gpx vào dự án của mình và sử dụng nó:
chỉnh sửa lược đồ> tùy chọn> cho phép mô phỏng vị trí> chọn tên tệp chứa ví dụ:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="41.92296" lon="-87.63892"></wpt>
</gpx>

tùy chọn chỉ cần mã hóa cứng các giá trị vĩ độ / kinh độ được trả về bởi trình quản lý vị trí. Đây là phong cách cũ mặc dù.

vì vậy bạn sẽ không thêm nó vào trình mô phỏng mà vào dự án Xcode của bạn.


2
Làm thế nào tôi có thể sử dụng vị trí được xác định trước. u có thể vui lòng giải thích chi tiết ??? Tôi muốn biết về nó.
Shreyash Mahajan,

nhấp vào xcode rồi đến sản phẩm> lược đồ> Chỉnh sửa lược đồ> vị trí cốt lõi
Mumthezir VP

1

Kể từ khi viết bài này, tùy chọn vị trí cho trình mô phỏng IOS đã được chuyển đến Tính năng -> Vị trí -> Vị trí tùy chỉnh


0

Muộn còn hơn không :)

Tôi vừa xem qua iSimulate này cho phép bạn gửi vị trí Giả mạo đến ứng dụng. Giải pháp KHÔNG miễn phí.

> Q: How does iSimulate work? 

> A: When added to your project, the iSimulate
> SDK library creates a listening server
> on your iPhone Simulator that waits
> for a connection from an iPhone/iPod
> running the iSimulate client. When
> such connection is established, the
> iSimulate client running on your
> iPhone/iPod captures all data from the
> accelerometer sensor, the touch
> events, the location and device ID and
> streams them to the server. The
> iSimulate SDK library then recreates
> all input events synthetically. This
> is entirely transparent to your
> application and does not interfere
> with your application's functionality.

Dù sao, tôi đang lên kế hoạch để có được điều này. sẽ cập nhật thêm sớm!


Tôi vừa liên hệ với các nhà phát triển: "Trong Tùy chọn của iSimulate, có thể truy cập từ nút trên cùng bên phải trong màn hình" Chọn Máy tính để Kết nối với ", bạn có thể chọn một trong bốn vị trí khác để sử dụng." Vì vậy, không có nhiều trợ giúp thực sự.
Simon Woodside

bitbucket.org/gnucoop/xamarin-ios-simulator-enhancements Điều này giúp mô phỏng vị trí miễn phí
Pierre

0

Bạn muốn đặt vị trí của mình ở đâu? bạn có thể sử dụng api mapkit để hiển thị vị trí của bạn. xem icodeblog.com để biết thêm chi tiết về cách sử dụng mapkit. Ngoài ra, bạn có thể lưu trữ các cuộn dây mong muốn của mình chỉ cần tạo một đối tượng CLLocation2D * vị trí; location.longitude = giá trị kinh độ mong muốn của bạn; location.latitude = giá trị vĩ độ mong muốn của bạn;


Đây là một câu hỏi cũ khi tôi mới làm quen với SDK. Bây giờ tôi nhận ra rằng không có hỗ trợ tự động hóa CoreLocation trong Trình mô phỏng, điều này thật đáng tiếc.
Vách đá
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.