zoukankan      html  css  js  c++  java
  • IOS 手绘地图导航

    手绘地图导航

    第三方库

    NAMapKit,

    1)支持在手绘图上标记、缩放

    2)支持在单张图片

    3)支持瓦片小图片

     

    思路

    前提:美工已经切好手绘图,并告知我们当前的缩放级别。

    1)确定好手绘图左上角点在百度地图上的经纬度坐标。

    2)将百度地图经纬度坐标转换成平面坐标

    /**
     *将经纬度坐标转换为投影后的直角地理坐标
     *@param coordinate 待转换的经纬度坐标
     *@return 转换后的直角地理坐标
     */
    UIKIT_EXTERN BMKMapPoint BMKMapPointForCoordinate(CLLocationCoordinate2D coordinate);

    3)把要标记在手绘图上的点的百度坐标获取到

    4)把上述经纬度坐标转换成平面坐标并减去左上角的平面坐标的差值,即为上述经纬度所对应的手绘图坐标。

    5)在手绘图上添加标记:

    标记
    NAPinAnnotation *melbourne = [NAPinAnnotation annotationWithPoint:[self locationCoordToCgPoint:CLLocationCoordinate2DMake(30.549436, 114.311086)]];
    melbourne.title = @"鹅池";
    melbourne.subtitle = @"I have a subtitle";
    melbourne.color = NAPinColorRed;
    [mapView addAnnotation:melbourne animated:NO];
     
    - (CGPoint)locationCoordToCgPoint:(CLLocationCoordinate2D)coor
    {
        BMKMapPoint point = BMKMapPointForCoordinate(coor);
        // rate根据具体情况得到。
        // leftTopCoor为手绘图左上角点的百度地图平面坐标。
        return CGPointMake((point.x - leftTopCoor.x) * rate, (point.y - leftTopCoor.y) * rate);
    }

    6)如果不需要显示当前位置信息,则可以拿到手绘图后直接在图片上测量出平面坐标然后标记。

  • 相关阅读:
    【Java】RuleSource约束常用方法整理
    【Oracle】多次提交造成性能慢及处理方法
    【Oracle】ORA-28000: the account is locked-的解决办法
    【Eclipse】几个最重要的快捷键
    JavaScript 垃圾回收总结
    JavaScript 执行环境(作用域)总结
    JavaScript基本数据类型
    全局 Ajax 事件处理器
    require.js 模块化
    配置apache反向代理进行跨域
  • 原文地址:https://www.cnblogs.com/java-koma/p/5282407.html
Copyright © 2011-2022 走看看