दिलचस्प पोस्ट
अद्वितीय पंक्तियों, आरओ में दो कॉलमों पर विचार करने के बिना PHPUnit के साथ संरक्षित विधियों का परीक्षण करने के लिए सर्वोत्तम प्रथाएं PHP में ऑब्जेक्ट सॉर्ट करें फ़ायरफ़ॉक्स या क्रोम में ActiveXObject (IE नहीं!) क्या यह कभी भी एक PHP चर या PHP निरंतर में सादा पाठ में पासवर्ड संग्रहीत करने के लिए ठीक है? आईओएस 8 कस्टम कीबोर्ड: ऊँचाई बदलना एक्सेस विनिर्देशक क्या हैं? क्या मुझे निजी, संरक्षित या सार्वजनिक से वारिस होना चाहिए? क्लाइंट आईपी पता jQuery का उपयोग कैसे करें मैं स्वत: पूर्ण पाठ का प्रयोग कैसे कर सकता हूं और इसे वेब एपीआई से डेटा के साथ जनरेट कर सकता हूं? कोई भी FFMPEG के लिए सी # बाइंडिंग का एक सेट जानता है? टुकड़ा के टुकड़े टुकड़े से कैसे प्राप्त करें? क्या SQLite3 विदेशी कुंजी बाधाओं का समर्थन नहीं करता है? विंडोज 8 में एनपीएम पथ फिक्सिंग एसडीके 2.3 के लिए उन्नत – अब कोई emulators कनेक्टिविटी नहीं है ActiveMq मिडलवेयर एकीकरण के साथ जर्सी आराम वेब सेवा

एक MKMapView की सीमाएं प्राप्त करना

एक बाह्य सर्वर से क्वेरी को सेटअप करने के लिए, मैं एक iPhone ऐप में वर्तमान मानचित्र दृश्य की सीमाएं प्राप्त करना चाहता हूं I UIView को सीमा पर प्रतिक्रिया चाहिए, लेकिन ऐसा लगता है कि MKMapView नहीं करता है। किसी क्षेत्र को स्थापित करने और मानचित्र में ज़ूमिंग करने के बाद मैं सीमा को प्राप्त करने का प्रयास करता हूं। मैं पहले चरण पर फंस गया हूँ जो कि सीपी पॉइंट प्राप्त करने का प्रयास है जो नक्शे के एसई और एनडब्ल्यू कोनों का प्रतिनिधित्व करता है। उसके बाद मैं उपयोग करने जा रहा था:

- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view 

मानचित्र को निर्देशांक में अंक बदलने के लिए। लेकिन मैं यह भी नहीं मिल सकता है …

 //Recenter and zoom map in on search location MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}}; region.center = mySearchLocation.searchLocation.coordinate; region.span.longitudeDelta = 0.01f; region.span.latitudeDelta = 0.01f; [self.mapView setRegion:region animated:YES]; //After the new search location has been added to the map, and the map zoomed, we need to update the search bounds //First we need to calculate the corners of the map CGPoint se = CGPointMake(self.mapView.bounds.origin.x, mapView.bounds.origin.y); CGPoint nw = CGPointMake((self.mapView.bounds.origin.x + mapView.bounds.size.width), (mapView.bounds.origin.y + mapView.bounds.size.height)); NSLog(@"points are: se %@, nw %@", se, nw); 

कोड बिना चेतावनी के संकलित करता है, हालांकि से और एनडब्ल्यू दोनों अशक्त हैं। Self.mapView.bounds.origin.x को देखकर चर 0 है। एसएसएलॉग को सीधे स्वयं की कोशिश कर रहा हूँ। MapView.bounds.size.width मुझे "प्रोग्राम प्राप्त संकेत देता है:" EXC_BAD_ACCESS "।" जो एनएसएलॉग से आते हैं

किसी को भी एक MKMapView के दृश्य क्षेत्र से दक्षिण पूर्व कोने और उत्तर-पश्चिम कोने (मैप निर्देशांक में) प्राप्त करने का उचित तरीका पता है?

संपादित करें: ऐसा लगता है कि जब भी आपसे कुछ पूछा जाता है, तो इसका उत्तर आपके पास ठीक बाद आता है। मैं NSLog में प्रत्येक चर को प्रिंट करने के बजाय @f के बजाय% @ का उपयोग कर रहा था जो वहां त्रुटियों को फेंक रहा था मैंने भी एमका मैपव्यू की एनोटेशनविझिबिलरेक्ट प्रॉपर्टी की खोज की। ऐसा लगता है कि एनोटेशन विज़िकरेक्ट माता-पिता के दृश्य निर्देशांक पर आधारित है।

वेब के समाधान से एकत्रित समाधान "एक MKMapView की सीमाएं प्राप्त करना"

ठीक है, मैं आधिकारिक तौर पर अपने प्रश्न का उत्तर देता हूं, लेकिन चूंकि मैं जवाब यहां पोस्ट करने से पहले इसे कहीं नहीं मिला था:

 //To calculate the search bounds... //First we need to calculate the corners of the map so we get the points CGPoint nePoint = CGPointMake(self.mapView.bounds.origin.x + mapView.bounds.size.width, mapView.bounds.origin.y); CGPoint swPoint = CGPointMake((self.mapView.bounds.origin.x), (mapView.bounds.origin.y + mapView.bounds.size.height)); //Then transform those point into lat,lng values CLLocationCoordinate2D neCoord; neCoord = [mapView convertPoint:nePoint toCoordinateFromView:mapView]; CLLocationCoordinate2D swCoord; swCoord = [mapView convertPoint:swPoint toCoordinateFromView:mapView]; 

एक अन्य विकल्प अपने MKMapView इंस्टेंस पर दृश्य MapRect संपत्ति का उपयोग करना है और MKCoordinateForMapPoint () का उपयोग अक्षांश / लोन में कनवर्ट करना है।

 MKMapRect mRect = self.mapView.visibleMapRect; MKMapPoint neMapPoint = MKMapPointMake(MKMapRectGetMaxX(mRect), mRect.origin.y); MKMapPoint swMapPoint = MKMapPointMake(mRect.origin.x, MKMapRectGetMaxY(mRect)); CLLocationCoordinate2D neCoord = MKCoordinateForMapPoint(neMapPoint); CLLocationCoordinate2D swCoord = MKCoordinateForMapPoint(swMapPoint); 

स्विफ्ट दूर … (डेरेड्रॉक्सी के उत्तर के आधार पर …)

 typealias Edges = (ne: CLLocationCoordinate2D, sw: CLLocationCoordinate2D) extension MKMapView { func edgePoints() -> Edges { let nePoint = CGPoint(x: self.bounds.maxX, y: self.bounds.origin.y) let swPoint = CGPoint(x: self.bounds.minX, y: self.bounds.maxY) let neCoord = self.convertPoint(nePoint, toCoordinateFromView: self) let swCoord = self.convertPoint(swPoint, toCoordinateFromView: self) return (ne: neCoord, sw: swCoord) } } 

मैं इसे पार्स जियोबॉक्स क्वेरी के साथ काम करने में सक्षम था:

 //Calculate the corners of the map to get the points CGPoint nePoint = CGPointMake(self.mapView.bounds.origin.x + self.mapView.bounds.size.width, self.mapView.bounds.origin.y); CGPoint swPoint = CGPointMake((self.mapView.bounds.origin.x),(self.mapView.bounds.origin.y+ self.mapView.bounds.size.height)); //Transform points into lat/long values CLLocationCoordinate2D NECoordinate = [self.mapView convertPoint:nePoint toCoordinateFromView:self.mapView]; CLLocationCoordinate2D SWCoordinate = [self.mapView convertPoint:swPoint toCoordinateFromView:self.mapView]; //Convert to Parse GeoPoints PFGeoPoint *Southwest = [PFGeoPoint geoPointWithLatitude:SWCoordinate.latitude longitude:SWCoordinate.longitude]; PFGeoPoint *Northeast = [PFGeoPoint geoPointWithLatitude:NECoordinate.latitude longitude:NECoordinate.longitude]; 

यह कोड 90/180 डिग्री जैसे घूर्णन के नक्शे के साथ काम करता है। सेट mapView.pitchEnabled = NO; कम कीड़े के लिए

 CLLocationDirection heading = mapView.camera.heading; float mapWidth = mapView.frame.size.width; float mapHeight = mapView.frame.size.height; float neX = mapWidth; float neY = 0.0; float swX = 0.0; float swY = mapHeight; if (heading >= 0 && heading <= 90) { //println("Q1") float ratio = heading / 90; neX = (1-ratio) * mapWidth; swX = (mapWidth*ratio); } else if (heading >= 90 && heading <= 180) { //println("Q2") float ratio = (heading - 90) / 90; neX = 0; neY = (mapHeight*ratio); swY = (1-ratio) * mapHeight; swX = mapWidth; } else if (heading >= 180 && heading <= 270) { //println("Q3") float ratio = (heading - 180) / 90; neX = mapWidth*ratio; neY = mapHeight; swX = (1-ratio) * mapWidth; swY = 0; } else if (heading >= 270 && heading <= 360) { //println("Q4"); float ratio = (heading - 270) / 90; neX = mapWidth; neY = (1-ratio) * mapHeight; swY = ratio * mapHeight; } CGPoint swPoint = CGPointMake(swX, swY); CGPoint nePoint = CGPointMake(neX, neY); CLLocationCoordinate2D swCoord = [mapView convertPoint:swPoint toCoordinateFromView:mapView]; CLLocationCoordinate2D neCoord = [mapView convertPoint:nePoint toCoordinateFromView:mapView]; 

यह http://wiki.openstreetmap.org/wiki/Bounding_Box बाउंडिंग बॉक्स के लिए एक दस्तावेज है

 bbox = left,bottom,right,top bbox = min Longitude , min Latitude , max Longitude , max Latitude 

यहां छवि विवरण दर्ज करें

आपके पास एक BoundingBox संरचना हो सकता है जो इसका प्रतिनिधित्व करता है

 struct BoundingBox { let min: CLLocationCoordinate2D let max: CLLocationCoordinate2D init(rect: MKMapRect) { let bottomLeft = MKMapPointMake(rect.origin.x, MKMapRectGetMaxY(rect)) let topRight = MKMapPointMake(MKMapRectGetMaxX(rect), rect.origin.y) min = MKCoordinateForMapPoint(bottomLeft) max = MKCoordinateForMapPoint(topRight) } var points: [CLLocationDegrees] { return [ min.longitude, min.latitude, max.longitude, max.latitude ] } } 

visibleMapRect के समान है

 let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: 320, height: 640)) XCTAssertEqual(mapView.userLocation.coordinate.latitude, 0) XCTAssertEqual(mapView.userLocation.coordinate.longitude, 0) let boundingBox = BoundingBox(rect: mapView.visibleMapRect) XCTAssertEqual(boundingBox.max.longitude-boundingBox.min.longitude, mapView.region.span.longitudeDelta) XCTAssertEqual(boundingBox.max.latitude-boundingBox.min.latitude, mapView.region.span.latitudeDelta) 

ध्यान दें कि ट्यूपल (long,lat)