当前位置:  编程技术>移动开发
本页文章导读:
    ▪map服务中地址和经纬度的互相转换        地图服务中地址和经纬度的互相转换Google Geocoding API 请求必须采用以下形式: http://maps.google.com/maps/api/geocode/output?parameters 中,output 可以是json或xml Google Geocoding API 使用以下网址参数定义地.........
    ▪ objective-c 基础教程 读书笔记之第八章聚合家族简介,NSArray,NSDictionary        objective-c 基础教程 读书笔记之第八章集合家族简介,NSArray,NSDictionary一:数组NSArray      NSArray可以存储任何objective-c的对象。当然对于int,float这些对象无法保存,另外nil对象也不能保存.........
    ▪ 百度map之二百度map覆盖物(根据老罗视频整理)       百度地图之二百度地图覆盖物(根据老罗视频整理)视频链接:http://www.verycd.com/files/d630c01ecba00982ababcd884afb74d984718080 接上篇 百度地图之一百度地图搭建开发环境(老罗视频笔记整理) 显示交通地.........

[1]map服务中地址和经纬度的互相转换
    来源: 互联网  发布时间: 2014-02-18
地图服务中地址和经纬度的互相转换

Google Geocoding API 请求必须采用以下形式:
http://maps.google.com/maps/api/geocode/output?parameters
中,output 可以是json或xml

Google Geocoding API 使用以下网址参数定义地址查询请求:

latlng- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。
address-要查询的地址
sensor- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false。


1. 知道地址获取经纬度

http://maps.googleapis.com/maps/api/geocode/json?address=地址&sensor=false

2. 知道经纬度获取地址

http://maps.google.com/maps/api/geocode/xml?latlng=36.60991,114.49401&language=zh-CN&sensor=false

经纬度书写的顺序为(纬度,经度)。


[文章作者]曾健生

[作者邮箱]zengjiansheng1@126.com

[作者QQ]190678908

[博客] http://blog.csdn.net/newjueqi

http://blog.sina.com.cn/h6k65




    
[2] objective-c 基础教程 读书笔记之第八章聚合家族简介,NSArray,NSDictionary
    来源: 互联网  发布时间: 2014-02-18
objective-c 基础教程 读书笔记之第八章集合家族简介,NSArray,NSDictionary

一:数组NSArray

     NSArray可以存储任何objective-c的对象。当然对于int,float这些对象无法保存,另外nil对象也不能保存。

    + (id)arrayWithObjects:(id)firstObj, ...这个是产生一个数组的通常方法。

    通过索引获取数组中的一个对象。- (id)objectAtIndex:(NSUInteger)index

    遍历数组,会通过下面的例子来说明:

NSArray * array = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];

NSString * tmp = [array objectAtIndex:2];

//遍历数组

for (NSString * string in array) {

        NSLog(@"array:%@",string);

}

二:可变数组:

    跟NSString和NSMutableString的关系一样,如果需要对数组的值进行删除或者重置操作,需要用到可变数组 NSMutableArray。

   + (id)arrayWithCapacity:(NSUInteger)numItems  创建一个指定初始化长度的数组。

    - (void)addObject:(id)anObject 添加一个元素。

    - (void)insertObject:(id)anObject atIndex:(NSUInteger)index  在指定位置添加一个元素。

    - (void)removeObjectAtIndex:(NSUInteger)index  删除一个数组元素。

这里注意一点的是创建数组指定的参数并不是说数组的最大容量,系统只是根据这个值来分配一个初始的内存大小,如果有更多的元素,只管加就是了,下面的例子演示了添加更多的元素是完全ok的。

NSMutableArray * array2 = [NSMutableArray arrayWithCapacity:3];

for (int i=0; i<5; i++)

{

NSString * test = [NSString stringWithFormat:@"object %d",i];

[array2 addObject:test];

}

for (NSString * tmp in array2)

{

NSLog(@"array:%@",tmp);

}

输出:

array:object 0

array:object 1

array:object 2

array:object 3

array:object 4

上面的例子中,初始化指定的长度是3,我们实际添加了5个元素。

三:NSDictionary和NSMutableDictionary。字典又称散列表或者关联数组

  不用我说,你大概就明白了,NSMutableDictionary 于NSDictionary的区别是可变。

   dictionaryWithObjectsAndKeys: 创建一个字典。

  - (id)objectForKey:(id)aKey 获取相应关键字的值。  

 NSMutableDictionary常用的几个函数:

  + dictionaryWithCapacity:  创建一个字典

  setObject:forKey:   增加一个元素,若该key存在,则替换

  removeObjectForKey: 删除一个元素。

四:如何往NSArray和NSDictionary中添加基本类型数据。

     我们说了,NSArray和NSDictionary只能保存对象,不能保存基本数据类型,如int,float,或者struct,要保存这些的话,就需要对其进行封装一下:

 这里介绍两个封装类:

1:NSNumber。

 + numberWithChar:

+ numberWithFloat:

+ numberWithInt:

+ numberWithBool:

对应的获得方法:

– charValue

– floatValue

– intValue

– boolValue

例子:

NSNumber * number;

number = [NSNumber numberWithInt:34];

[array addObject:number];

2:NSValue

  通常用来包装NSSzie,NSRect,NSPoint,和你自己创建的struct。

+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type  创建一个value。

传递的第一个参数是你想要包装数值的地址。第二个参数是描述这个数据类型的字符串,不需要自己来想这个头痛的参数,使用@encode指令就ok了。

例子:

NSMutableArray * array2 = [NSMutableArray arrayWithCapacity:3];

CGRect rect = CGRectMake(1,2,30,50);

CGRect rect = CGRectMake(1,2,30,50);

NSValue * value = [NSValue valueWithBytes:&rect objCType:@encode(CGRect) ];

[array2 addObject:value]; NSValue * tmpValue = [array2 lastObject];

CGRect tmpRect;

CGRect tmp2Rect;

[tmpValue getValue:&tmpRect];

tmp2Rect = [tmpValue CGRectValue ];

NSLog(@"Rect width:%@",tmpRect.size.width);

五:NSNull 

   不能在NSArray和NSDictionary中放入nil值。有些时候,确实没值放入,怎么办呢,那就使用NSNull。例子:

NSMutableDictionary * profile = [NSMutableDictionary dictionaryWithCapacity:3];

[profile setObject:[NSNull null] forKey:@"phoneNumber"];

id number = [profile objectForKey:@"phoneNumber"];

if(number == [NSNull null]){

  NSLog(@"the value is nil");

}

   


  






    
[3] 百度map之二百度map覆盖物(根据老罗视频整理)
    来源: 互联网  发布时间: 2014-02-18
百度地图之二百度地图覆盖物(根据老罗视频整理)

视频链接:http://www.verycd.com/files/d630c01ecba00982ababcd884afb74d984718080

接上篇 百度地图之一百度地图搭建开发环境(老罗视频笔记整理)

显示交通地图


 

//显示交通地图 
mapView.setTraffic(true); 



显示卫星地图



//显示卫星地图 
mapView.setSatellite(true);


如何给地图覆盖物概述:

所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图象元素(包括:折线和多变形和圆)、定位图标等覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,他们会相应的移动。

地图API提供了如下几种覆盖物:

Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示。

MyLoactionOverlay:一个负责显示用户当前位置的Overlay。

ItemizedOverlay<Item extends OverlayItem>: Overlay的一个基类,包含了一个OverlayItem列表,相当于一组分条Overlay,通过继承此类,将一组兴趣点显示在地图上。

PoiOverlay:本地搜索图层,提供某一特定地区的位置搜索服务,比如在北京市搜索“公园”,通过此公园显示在地图上。

RouteOverlay:步行、驾车导航线路图层,将步行、驾车出行方案的路线及关键点显示在地图上。

TransitOverlay:公交换乘线路图层,将某一特定地区的公交出行方案的路线及换乘位置显示在地图上;

实战案例之一:演示地图覆盖物的描述



package com.android.android_baidu_myoverlay; 
  
import com.android.android_baidu_myoverlay.R; 
import com.baidu.mapapi.BMapManager; 
import com.baidu.mapapi.GeoPoint; 
import com.baidu.mapapi.MKGeneralListener; 
import com.baidu.mapapi.MapActivity; 
import com.baidu.mapapi.MapController; 
import com.baidu.mapapi.MapView; 
import com.baidu.mapapi.Overlay; 
  
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.graphics.Point; 
import android.os.Bundle; 
import android.widget.Toast; 
  
public class MainActivity extends MapActivity { 
  
    //添加百度地图的相关控件 
    private MapView mapView; 
    //加载地图的引擎 
    private BMapManager bMapManager; 
    //百度地图的key 
    private String KeyString = "8C426377B3526B6BF3672C9BA3BB544D1E8289CD"; 
    //在百度地图上添加一些控件,比如是放大或者缩小的控件 
    private MapController mapController; 
      
    @Override
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        mapView = (MapView) this.findViewById(R.id.bmapView); 
        bMapManager = new BMapManager(MainActivity.this    ); 
        //必须要加载key 
        bMapManager.init(KeyString, new MKGeneralListener() { 
              
            public void onGetPermissionState(int arg0) { 
                if(arg0==300){ 
                    Toast.makeText(MainActivity.this, "输入的key有错,请核实!!", 1).show(); 
                } 
            } 
              
            public void onGetNetworkState(int arg0) { 
                  
            } 
        }); 
        this.initMapActivity(bMapManager); 
        //表示可以设置缩放功能 
        mapView.setBuiltInZoomControls(true); 
        mapController = mapView.getController(); 
        mapController.setZoom(12); 
        mapView.getOverlays().add(new MyOverlay()); 
         
    } 
      
    public class MyOverlay extends Overlay{ 
        //构建在地图上的一个点 
        GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); 
        //声明一个画笔的工具 
        private Paint paint = new Paint(); 
          
        @Override
        public void draw(Canvas arg0, MapView arg1, boolean arg2) { 
            super.draw(arg0, arg1, arg2); 
            Point point = mapView.getProjection().toPixels(geoPoint, null); 
            arg0.drawText("*这里是天安门", point.x, point.y, paint); 
        } 
    } 
  
    @Override
    protected void onDestroy() { 
        super.onDestroy(); 
        if(bMapManager!=null){ 
            bMapManager.destroy(); 
            bMapManager = null; 
        } 
    } 
      
    @Override
    protected void onResume() { 
        super.onResume(); 
        if(bMapManager!=null){ 
            bMapManager.start(); 
        } 
    } 
      
    @Override
    protected void onPause() { 
        // TODO Auto-generated method stub 
        super.onPause(); 
        if(bMapManager!=null){ 
            bMapManager.stop(); 
        } 
    } 
      
    @Override
    protected boolean isRouteDisplayed() { 
        // TODO Auto-generated method stub 
        return false; 
    } 
}


源代码下载地址: http://download.csdn.net/detail/wenquan125/4786167


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3