RasterMap 有两个方法可以用于平移地图,panTo 将地图移动到指定经纬度坐标,panDirection(dx,dy) 将地图从当前位置平移dx,dy 个象素。
下列示例可以上,下,左,右平移地图。
package com.pstreets.gisengine.demo.lwuit; //--------------------------------- IMPORTS ------------------------------------ import com.mapdigit.gis.geometry.GeoLatLng; import com.mapdigit.gis.raster.MapType; import com.pstreets.gisengine.demo.MapDemoLWUIT; import com.sun.lwuit.Command; import com.sun.lwuit.events.ActionEvent; public class MapPanLWUIT extends MapDemoLWUIT{ private Command mapUpCommand; private Command mapDownCommand; private Command mapLeftCommand; private Command mapRightCommand; public void startApp() { init(); mapUpCommand=new Command("Up"){ public void actionPerformed(ActionEvent evt) { map.panDirection(0, -32); } }; mapDownCommand=new Command("Down"){ public void actionPerformed(ActionEvent evt) { map.panDirection(0, 32); } }; mapLeftCommand=new Command("Left"){ public void actionPerformed(ActionEvent evt) { map.panDirection(-32, 0); } }; mapRightCommand=new Command("Right"){ public void actionPerformed(ActionEvent evt) { map.panDirection(32, 0); } }; canvas.addCommand(mapUpCommand); canvas.addCommand(mapDownCommand); canvas.addCommand(mapLeftCommand); canvas.addCommand(mapRightCommand); GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778); map.setCenter(center, 13, MapType.MICROSOFTCHINA); canvas.show(); } }
LWUIT 引路蜂地图开发包Ver2.1下载
UITableViewController是IOS开发中一个比较重要的试图控制器,是集成了UITableView视图的控制器,在实际开发中经常用到,功能非常强大,可定制性也很高,下面从简单的使用和自定义Cell以及事件响应等方面来使用。
1.首先创建一个Single View Project,命名为UITableViewControllerTest。打开ViewController.xib并拖入一个UITableView,选中该视图,并点击Connections inspector,分别将delegate和dataSource连线到File's owner
2.在AppDelegate.h中添加属性
@property (strong, nonatomic) IBOutlet UITabBarController * rootViewController;
并在.m文件中添加合成器
@synthesize rootViewController;
然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加该TableView为subView
3.在ViewController.h文件中添加协议UITableViewDelegate,UITableViewDataSource,然后在.m文件中实现协议中的方法
#pragma mark -
#pragma mark Table View Data Source Methods
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listDatas count];
}
上面的方法是返回Table中的行数
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * SimpleTableViewIdentifier =@"SimpleTableViewIdentifier";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableViewIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableViewIdentifier];
}
UIImage * img = [UIImage imageNamed:@"singleicon"];
cell.imageView.image = img;
NSUInteger row = [indexPath row];
cell.textLabel.text = [listDatas objectAtIndex:row];
return cell;
}
上面的方法是构造每一个cell,也就是每一行,SimpleTableViewIdentifier是标记,dequeueReusableCellWithIdentifier方法是当有可重用的cell时,根据标记直接取,而不用重新生成,可以提高效率。
NSIndexPath封装了有关行和分区的信息
UIImage * img = [UIImage imageNamed:@"singleicon"];
cell.imageView.image = img;
NSUInteger row = [indexPath row];
cell.textLabel.text = [listDatas objectAtIndex:row];
这段代码分别设置了行的图片和文字,另外,通过accessoryType属性可以设置行的附属属性,有几种样式可以提供选择。也可以自定义附属视图:cell.accessoryView = [[myView alloc] init];
4.在viewDidLoad方法中添加NSArray后,填入数据,然后run,可以看打运行结果
在这里我使用了TabBarController来承载三种类型的tableview,分别是Plain、Group以及Custom自定义的
5.下面看第二种样式,分组的形式
使用分组的话还要添加一个方法,返回一共有多少组
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
另外可以设置分组标题
//返回组的名称
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if ([keys count] == 0) {
returnnil;
}
NSString * key = [keys objectAtIndex:section];
return key;
}
//设置行的高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return60;
}
#pragma mark Table Delegate Methods
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
NSString * message = [[NSString alloc]initWithFormat:@"You selected is %@!",[listDatas objectAtIndex:row]];
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Information" message:message delegate:nilcancelButtonTitle:@"Confirm" otherButtonTitles:nil,nil];
[alert show];
}
上面这个方法是单击行的方法,点击一行后弹出一个对话框UIAlertView
6.最后是自定义cell
首先拖一个UITableViewCell到.xib文件中,并拖入一些视图
然后在.h文件中声明属性
@property(nonatomic,retain)IBOutlet UITableViewCell * tableCell;
@property(nonatomic,retain)IBOutlet UILabel * name;
@property(nonatomic,retain)IBOutlet UILabel * color;
@property(nonatomic,retain)IBOutlet UIImageView * imageView;
7.在.m文件中添加合成器并实现如下方法:
#pragma mark Table Data Source Methods
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [computers count];
}
/*
自定义表格单元格
*/
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CustomTableViewIdentifier =@"CustomTableViewIdentifier";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CustomTableViewIdentifier];
if (cell == nil) {
//加载自定义表格单元格nib文件
NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil];
if ([nib count] > 0) {
//tableCell已与自定义cell相关联
cell = self.tableCell;
}
}
NSUInteger row = [indexPath row];
NSDictionary * rowData = [computers objectAtIndex:row];
self.name.text = [rowData objectForKey:@"Name"];
self.color.text = [rowData objectForKey:@"Color"];
UIImage * img = [UIImage imageNamed:@"doubleicon"];
imageView.image = img;
//cell.imageView.image = img;
return cell;
}
8.最后编译运行,结果如下图:
以上就是简单的UITableViewController的使用,过程可能讲的不是很清楚,有问题可以一起交流,希望和同为IOS开发路上的人一同学习一同进步。
我的QQ:283994757
新浪微博:唐韧_Ryan
IOS做了这么久也没写过什么博客,不好不好,今天开始写
遇到的问题:"_OBJC_CLASS_$_Play", referenced from:
:
Tagert--Build Phases -- Compile Sources 下添加对应的.m文件
运行,解决