目前分類:地圖類 (17)

瀏覽方式: 標題列表 簡短摘要

20120619152123_339  

地图应用经常会涉及到线路的绘制问题,ios下可以使用MKMapView进行地图开发,使用

MKOverlayView进行线路的绘制。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

163308ea9eeoygnja35sys 
使用MapKit和iOS的定位功能,將你的運行軌跡繪製在地圖上面。
實現,在之前的一篇文章:上顯示自己的位置中描述了如何在地圖上顯示自己的位置,如果我們將這些位置先保存起來,然後串聯起來繪製到地圖上面,那就是我們的運行軌跡了。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

一行代碼顯示你的位置

iOS中的MapKit集成了定位的功能,使用一行代碼就可以在google地圖上展示出自己當前的位置,代碼如下:

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在MapView上好像只能載入一種圖案(大頭針or自訂圖片)
- (void)viewDidLoad {
[super viewDidLoad];

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

  1. /*******************************************************************************
  2. * iPhone-Wireless Project : Telephony Library                                *
  3. * Copyright (C) 2007      Geohot <geohot@gmail.com>                          *
  4. * Copyright (C) 2007-2008 Pumpkin <pumpkingod@gmail.com>                      *
  5. * Copyright (C) 2007-2008 Lokkju <lokkju@gmail.com>                          *
  6. *******************************************************************************
  7. * $LastChangedDate::                                                        $ *
  8. * $LastChangedBy::                                                          $ *
  9. * $LastChangedRevision::                                                    $ *
  10. * $Id::                                                                    $ *
  11. *******************************************************************************
  12. *  This program is free software: you can redistribute it and/or modify      *
  13. *  it under the terms of the GNU General Public License as published by      *
  14. *  the Free Software Foundation, either version 3 of the License, or          *
  15. *  (at your option) any later version.                                        *
  16. *                                                                            *
  17. *  This program is distributed in the hope that it will be useful,            *
  18. *  but WITHOUT ANY WARRANTY; without even the implied warranty of            *
  19. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
  20. *  GNU General Public License for more details.                              *
  21. *                                                                            *
  22. *  You should have received a copy of the GNU General Public License          *
  23. *  along with this program.  If not, see <http://www.gnu.org/licenses/>.      *
  24. *******************************************************************************/
  25. /* $HeadURL$ */
  26. #include "CoreTelephony.h"
  27. #include <stdio.h>
  28. #include <CoreFoundation/CoreFoundation.h>
  29. #include <sys/time.h>
  30. /*
  31.         main.c : Hack to CoreTelephony. Most of the peculiarities of the code below is based on obervation.
  32. */
  33. /*
  34.         For some reason, all these variables have to be global. Toolchain bug?
  35. */
  36. CFMachPortRef port;
  37. struct CTServerConnection *sc=NULL;
  38. struct CellInfo cellinfo;
  39. int b;
  40. int t1;
  41. /*
  42.         Never called.
  43. */
  44. void callback()
  45. {
  46.         printf("Callback called\n");
  47. }
  48. /*
  49.         Again, _CTServerConnectionCreate() has to be called outside the main(), or whatever is using CTServerConnection.
  50.         Hence the existence of this function.
  51. */
  52.        
  53. void cellconnect()
  54. {
  55.         int t1;
  56.         sc=_CTServerConnectionCreate(kCFAllocatorDefault, callback, NULL);
  57.         /*
  58.                 port is not currently used, shuld be usable with a runloop.
  59.         */
  60.         port=CFMachPortCreateWithPort(kCFAllocatorDefault, _CTServerConnectionGetPort(sc), NULL, NULL, NULL);
  61.         _CTServerConnectionCellMonitorStart(&t1,sc);
  62.         printf("Connected\n");
  63. }
  64. void getCellInfo()
  65. {
  66.         int cellcount;
  67.         _CTServerConnectionCellMonitorGetCellCount(&t1,sc,&cellcount);
  68.         printf("Cell count: %x\n",cellcount);
  69.         printf("Size = %x\n", sizeof(struct CellInfo));
  70.         unsigned char *a=malloc(sizeof(struct CellInfo));
  71.         for(b=0;b<cellcount;b++)
  72.         {     
  73.                 //OMG the toolchain is broken, &cellinfo doesn't work
  74.                 _CTServerConnectionCellMonitorGetCellInfo(&t1,sc,b,a); memcpy(&cellinfo,a,sizeof(struct CellInfo));
  75.                 //OMG the toolchain is more broken, these printfs don't work on one line
  76.                 printf("Cell Site: %d, MNC: %d, ",b,cellinfo.servingmnc);
  77.                 printf("Location: %d, Cell ID: %d, Station: %d, ",cellinfo.location, cellinfo.cellid, cellinfo.station);
  78.                 printf("Freq: %d, RxLevel: %d, ", cellinfo.freq, cellinfo.rxlevel);
  79.                 printf("C1: %d, C2: %d\n", cellinfo.c1, cellinfo.c2);
  80.         }
  81.         if(a) free(a);
  82. }
  83. int main()
  84. {
  85.         printf("iPhone Cell Stumbler\n");
  86.         cellconnect();
  87.         int cellcount;
  88.         while(1)
  89.         {
  90.                 getCellInfo();
  91.                 sleep(1);
  92.         }
  93.         return 0;
  94. }

shadow 發表在 痞客邦 PIXNET 留言(1) 人氣()

與地圖打交道時,有時需要查找經緯度獲取地理資訊,MapKit提供了一種工具--反向地理編碼 MKReverseGeocoder

 

MKReverseGeocoder *reverseGeocoder =[[[MKReverseGeocoder alloc] initWithCoordinate:self.mapView.userLocation.location.coordinate] autorelease];

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation

{
    MKPinAnnotationView *pinView = nil;
    if(annotation != mapView.userLocation) 
    {
        static NSString *defaultPinID = @"目的地";
        pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
        if ( pinView == nil )
            pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
        
        pinView.pinColor = MKPinAnnotationColorPurple;
        pinView.canShowCallout = YES;
        pinView.animatesDrop = YES;
        pinView.draggable=YES;
        pinView.selected=YES;
    }
    else
    {
        [mapView.userLocation setTitle:@"I am here"];
    }
    
    return pinView;
}

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

各位看官请注意了,是点到线段的距离。点到线段,不是点到直线或者点到射线,如果不明白啥就点到直线的记录,请参考初中几何教材。
(x1,y1),(x2,y2)是线段的两个端点,(x3,y3)是那个点。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

image_thumb17.png  

實現的具體過程很簡單:

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

FROM: http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

iOS中的MapKit集成了google地圖api的很多功能加上iOS的定位的功能,我們就可以實現將你運行的軌跡繪製到地圖上面。這個功能非常有用,比如快遞追蹤、汽車的gprs追蹤、人員追蹤等等。這篇文章我們將使用Map Kit和iOS的定位功能,將你的運行軌跡繪製在地圖上面。
實現

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在iphone 自帶的map中顯示2點間的乘車路線
map:
NSString *urlString = @"http://maps.google.com/maps?daddr=37.74324,-121.43432&saddr=37.5,-121.4";

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在 iOS 應用中使用 GPS大致分下麵兩步:1、添加 CoreLocation.framework;2、生成 CLLocationManager 測量位置。 測試代碼如下: // LocationViewCtrl.h #import UIKit/UIKit.h #import CoreLocation/CoreLocation.h @inter
在 iOS 應用中使用 GPS大致分下麵兩步:1、添加 CoreLocation.framework;2、生成 CLLocationManager 測量位置。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

image_thuewrwemb18.png  

添加相关代码:

添加DisplayMap :

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

  利用 iPhone、iPad 內建的 GPS 訊息可以得到目前位置坐標。再透过 GPS 訊息得到目前所在城市名。

    - (void)startedReverseGeoderWithLatitude:(double)latitude longitude:(double)longitude{
        CLLocationCoordinate2D coordinate2D;
        coordinate2D.longitude = longitude;
        coordinate2D.latitude = latitude;
        MKReverseGeocoder *geoCoder = [[MKReverseGeocoder alloc] initWithCoordinate:coordinate2D];
        geoCoder.delegate = self;
        [geoCoder start];
    }#pragma mark -
    - (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
    {
    //NSString *subthroung=placemark.subThoroughfare;
    NSString *local=placemark.locality;
    //NSLog(@"城市名:%@-%@-%@",placemark.locality,local,subthroung);
        if (local) {
            [cityLabel setText:local];
        }
    }
    - (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error
    {
    }


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()