ตั้งค่าตำแหน่งใน iPhone Simulator


125

ฉันจะตั้งค่าตำแหน่ง (ตามที่เลือกในบริการ CoreLocation) ใน iPhone Simulator ได้อย่างไร


ฉันเพิ่มวิธีการสำหรับ Xcode 6. stackoverflow.com/questions/19694205/…
Ohmy

มีใครจัดการให้สิ่งนี้ทำงานใน React native, simulator ได้บ้าง?
Nikos

ด้วย iOS 13 เบต้า 2 ฉันจะเห็นเฉพาะตัวเลือก "ไม่มี" และ "กำหนดเอง" มีคนอื่นที่มีปัญหานี้หรือไม่? stackoverflow.com/q/56733625/1364053
nr5

คำตอบ:


122

ใน iOS 5 เครื่องจำลองมีตำแหน่งที่กำหนดได้

ภายใต้เมนู Debug รายการสุดท้ายคือ "Location"; สิ่งนี้ให้เมนูย่อยกับคุณ:

  • ไม่มี
  • ตำแหน่งที่กำหนดเอง
  • Apple Stores
  • แอปเปิ้ล
  • ขี่จักรยานในเมือง
  • วิ่งในเมือง
  • ทางด่วนไดรฟ์

ตำแหน่งที่กำหนดเองให้คุณป้อนค่า Lat / Long การขี่จักรยาน City Run และ Freeway Drive เป็นการจำลองสถานที่ที่เคลื่อนไหว (แน่นอนในคูเปอร์ติโน)

แน่นอนว่าสิ่งนี้ไม่ได้ช่วยในการดีบักสำหรับ iOS 4 (หรือรุ่นก่อนหน้า) แต่เป็นการปรับปรุงแน่นอน!


เมนูแก้จุดบกพร่องในโปรแกรมจำลอง IOS อยู่ที่ไหน
Lucky_girl

1
ใช้งานได้ แต่สำหรับเมนูดีบักบนเครื่องจำลองไม่ใช่เมนูบน xcode
Lance Samaria

2
สำหรับโปรแกรมจำลอง iOS ตอนนี้อยู่ภายใต้ "คุณลักษณะ"
J. Saw

85
  1. เรียกใช้โครงการใน iPhone Simulator
  2. สร้างในไฟล์ TextEdit ต่อไปนี้เรียกว่า MyOffice เป็นต้น สร้างนามสกุลเป็น. gpx ใส่คำอธิบายภาพที่นี่

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

  3. เลือกใน Xcode ที่พื้นที่จำลอง Add GPX File to Project...ใส่คำอธิบายภาพที่นี่

  4. เพิ่มไฟล์ที่สร้างจากเมนูไปยังโครงการ
  5. ตอนนี้คุณสามารถดูตำแหน่งของคุณในพื้นที่จำลอง:ใส่คำอธิบายภาพที่นี่

TextEdit ไม่บันทึกไฟล์. gpx ฉันจะทำอย่างไร?

2
บันทึกเป็น. txt (หรือ. xml) แล้วเปลี่ยนชื่อเป็น. gpx
beryllium

7
ขอบคุณ! ง่ายมากใช้งานได้ดี ในกรณีที่ใครก็ตามใช้ไฟล์ GPX ตัวอย่างในรูปแบบข้อความเพื่อให้คุณสามารถคัดลอกและวางได้: <? xml version = "1.0"?> <gpx version = "1.0" creator = "Name"> <wpt lat = "" lon = ""> <name> Office </name> </wpt> </gpx>
RyanG

1
คุณบันทึกวัน "+1" ของฉัน
SAHIL

3
เรารวมเวลาไว้ในนี้ได้ไหม ฉันต้องการทดสอบวิธี
startMonitoringSignificantLocationChanges

17

ในการติดต่อกลับของตัวแทนของฉันฉันตรวจสอบว่าฉันกำลังทำงานในโปรแกรมจำลอง ( #if TARGET_ IPHONE_SIMULATOR) หรือไม่และถ้าเป็นเช่นนั้นฉันจัดหา Lat / Long ของฉันเอง สำหรับความรู้ของฉันไม่มีทางอื่น


3
เริ่มต้นด้วย Xcode 4.2 ตอนนี้มีวิธีใต้Debugเมนูบนเครื่องจำลองโดยใช้Locationรายการที่อนุญาตให้ตั้งค่าตำแหน่งที่กำหนดเองหรือเลือกจากเครื่องเล่นและสถานที่ที่กำหนดไว้ล่วงหน้า
progrmr

17

ในเมนู iOS Simulator ให้ไปที่ Debug -> Location -> Custom Location คุณสามารถตั้งค่าละติจูดและลองจิจูดและทดสอบแอปได้ตามนั้น ใช้งานได้กับ mapkit และ CLLocationManager



5

ก่อน iOS 5 คุณสามารถทำได้ในรหัส:

ฉันใช้ตัวอย่างข้อมูลนี้ก่อน@implementationชั้นเรียนที่ฉันต้องการข้อมูลหัวเรื่องและตำแหน่งปลอม

#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

หลังจาก iOS 5 เพียงแค่รวมไฟล์ GPX ไว้ในโปรเจ็กต์ของคุณเพื่อให้มีการอัปเดตตำแหน่งอย่างต่อเนื่อง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>

ฉันใช้GPSies.comเพื่อสร้างไฟล์ฐานสำหรับข้อมูล gpx จำเป็นต้องมีการล้างข้อมูลเล็กน้อย

เปิดใช้งานโดยเรียกใช้โปรแกรมจำลองและเลือกไฟล์ของคุณ


(ที่มา: castleandersen.dk )


4

เปิดแอปพลิเคชัน iOS Simulator จากเมนู Debug -> Location ->

  1. ไม่มี
  2. ตำแหน่งที่กำหนดเอง
  3. ร้าน Apple ...

4

คุณสามารถแชร์ตำแหน่งที่ต้องการจากแอปพลิเคชัน macOS Mapsไปยังโปรแกรมจำลอง Xcodeได้อย่างง่ายดาย

  1. จาก Xcode ให้เรียกใช้แอปพลิเคชันในโปรแกรมจำลองตามปกติ
  2. เปิดแอปพลิเคชันแผนที่บน macOS (เพื่อความสะดวกฉันมักจะสร้างเดสก์ท็อปใหม่โดยที่ฉันมีทั้งโปรแกรมจำลองและแอปพลิเคชันแผนที่)
  3. ภายในแผนที่ (macOS) ให้คลิกค้างที่จุดใดก็ได้บนแผนที่หรือค้นหาสถานที่เพื่อให้แผนที่ปักหมุดที่คุณต้องการ
  4. คลิกที่หมุดจากนั้นคลิกที่ไอคอนข้อมูล (i) ( ดูภาพ )
  5. ที่ด้านขวาบนของมุมมองข้อมูลให้คลิกที่ไอคอนแชร์
  6. แบ่งปันตำแหน่งกับเครื่องจำลอง ( ดูภาพ )
  7. ยืนยันและสนุก :)

วิธีนี้ช่วยให้คุณทดสอบสถานที่บางแห่งได้อย่างรวดเร็วโดยมีความเข้าใจว่าสถานที่ตั้งนั้นอยู่ที่ใดตามภูมิศาสตร์ (เช่นสำหรับการทดสอบ geofencing) และตัดสินใจที่รันไทม์ว่าจะไปที่ไหนต่อไป (เช่นสำหรับการดีบักและการปรับแต่งสิ่งต่างๆ)

ทดสอบสิ่งนี้บน MacOS Catalina 10.15.4 และ Xcode 11.4


3

ผู้ใจดีที่FutureTapได้ทำให้ FTLocationSimulator สามารถใช้ได้ฟรีที่GitHub GitHubช่วยให้คุณสามารถเตรียมเส้นทางทดสอบโดยใช้ตัวอย่างเช่น Google Earth จากนั้นให้เครื่องมือจำลองฟีดพิกัดเหล่านี้ไปยังแอปของคุณ

ฉันได้เขียนบล็อกโพสต์เกี่ยวกับวิธีใช้ FTLocationSimulator เพื่อสลับไปมาระหว่างเส้นทางต่างๆได้อย่างง่ายดายในระหว่างการทดสอบคุณสมบัติตำแหน่ง


3

คุณสามารถเพิ่มไฟล์ gpx ลงในโปรเจ็กต์ของคุณและใช้มัน:
แก้ไขโครงร่าง> ตัวเลือก> อนุญาตการจำลองตำแหน่ง> เลือกชื่อไฟล์ที่มีตัวอย่าง:

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

อีกทางหนึ่งเพียงแค่ฮาร์ดโค้ดค่า lat / lon ที่ผู้จัดการสถานที่ส่งคืน นี่เป็นรูปแบบเก่าแม้ว่า

ดังนั้นคุณจะไม่เพิ่มลงในเครื่องจำลอง แต่เป็นโครงการ Xcode ของคุณ


2
ฉันจะใช้ตำแหน่งที่กำหนดไว้ล่วงหน้าได้อย่างไร ช่วยอธิบายรายละเอียดได้ไหม ??? ฉันอยากรู้เกี่ยวกับเรื่องนี้
Shreyash Mahajan

คลิกที่ xcode จากนั้นผลิตภัณฑ์> โครงร่าง> แก้ไขโครงร่าง> ตำแหน่งหลัก
Mumthezir VP

1

จากการเขียนนี้ตัวเลือกตำแหน่งสำหรับโปรแกรมจำลอง IOS ได้ถูกย้ายไปที่คุณสมบัติ -> ตำแหน่ง -> ตำแหน่งที่กำหนดเอง


0

มาสายดีกว่าไม่มาเลย :)

ฉันเพิ่งเจอiSimulateนี้ซึ่งให้คุณส่งตำแหน่งปลอมไปยังแอป การแก้ปัญหาไม่ฟรี

> 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.

อย่างไรก็ตามฉันกำลังวางแผนที่จะได้รับสิ่งนี้ จะอัพเดทเร็ว ๆ นี้!


ฉันเพิ่งติดต่อนักพัฒนา: "ในตัวเลือกของ iSimulate สามารถเข้าถึงได้จากปุ่มขวาบนในหน้าจอ" เลือกคอมพิวเตอร์เพื่อเชื่อมต่อ "คุณสามารถเลือกหนึ่งในสี่ตำแหน่งอื่น ๆ ที่จะใช้" ดังนั้นช่วยได้ไม่มากจริงๆ
Simon Woodside

bitbucket.org/gnucoop/xamarin-ios-simulator-enhancementsสิ่งนี้ช่วยจำลองสถานที่ได้ฟรี
ปิแอร์

0

คุณต้องการกำหนดตำแหน่งของคุณไว้ที่ใด คุณสามารถใช้ mapkit api เพื่อแสดงตำแหน่งของคุณ ดู icodeblog.com สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้ mapkit นอกจากนี้คุณสามารถจัดเก็บสายไฟที่คุณต้องการเพียงแค่สร้างวัตถุ CLLocation2D * ที่ตั้ง; location.longitude = ค่าลองจิจูดที่คุณต้องการ location.latitude = ค่าละติจูดที่คุณต้องการ


นี่เป็นคำถามเก่าตั้งแต่ตอนที่ฉันยังใหม่กับ SDK ตอนนี้ฉันรู้แล้วว่าไม่มีการรองรับการทำงานอัตโนมัติ CoreLocation ในโปรแกรมจำลองซึ่งเป็นเรื่องที่น่าเสียดาย
Cliff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.