开发鲜橙油耗的一些经历

最近开了新项目觉得异常的忙,每天都在设计和coding中切换。

鲜橙油耗是我两年前一个旧项目,当时做了一款简单的查询油耗的App,后来再也没有维护过,于是把它下架了。

最近觉得自己有记录油耗的需求,决定捡起来把它好好重写一下。开始了设计之后把第一版做了出来,经过思考又发现应该把重要的功能放在第一个页面,然后又开始了第二次修改。把语法更新到swift4.2,最后设计了新的App图标,重新上了线。

现在的版本也是很多不完善的地方,正在不断的改进和思考中。

晚上的时候和小伙伴语音沟通一些想法和需求,然后第二天实现出来。作为一个半独立开发者,用业余时间做自己的东西,想做一个精致的App真的是一件很耗精力的事情,事情越做越多,但是看见commit记录还是很有成就感的。

以后会一直维护这个App,希望越做越好。2019年fighting。

iOS原生地图开发的一些心得

最近在开发鲜橙油耗iOS端,APP中需要获取附近的加油站并且在地图上显示大头钉。

如何获取我附近的加油站?

这里用到MapKit里的一个小部件: MKLocalSearch MKLocalSearch 允许开发者得到一个地理区域内附近的兴趣点。有了这个部件我们可以轻松获取到想要的加油站数据,代码如下:

let search = MKLocalSearch(request: request)
search.start { (response, error) in
guard let items = response?.mapItems else { return }
for item in items {
let annotation: MKPointAnnotation = MKPointAnnotation()
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
annotation.subtitle = item.phoneNumber ?? ""
self.mapView.addAnnotation(annotation)
}
}

在这段代码中,我获取到了附近的加油站数据,并且在mapView中显示出了大头钉。

如何自定义大头钉图片?

在MapViewController里继承MKMapViewDelegate,并且为mapView设置代理:

class MapViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,CLLocationManagerDelegate,MKMapViewDelegate {
    @IBOutlet weak var mapView: MKMapView! {
        didSet {
            mapView.delegate = self
        }
    }
}

然后实现 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? 这个代理方法:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    let identifier = "item"
    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier)
    if (annotationView == nil) {
        annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)
    }
    annotationView?.annotation = annotation
    if (annotation is MKUserLocation) {
//这里如果是用户当前位置,设置不同的图片。 annotationView?.image = UIImage(named: "mylocation") } else { annotationView?.image = UIImage(named: "gasstation") } annotationView?.centerOffset = CGPoint(x: 0, y: 0) annotationView?.canShowCallout = true annotationView?.calloutOffset = CGPoint(x: 10, y: 0) annotationView?.isDraggable = true return annotationView }

最终效果如下:

iOS获取附近加油站

清单生活

每天在思考和开发side project的时候都会发现要做的事情越做越多。最后的解决方法就是全部列出来,然后挑几件觉得比较重要的做,测试效果。

需要自己做UI设计,想学Sketch,还有代码需要写,数据需要分析,运营思路需要自己想,产品内容需要自己整理和发布。基本上两台MacBook,一台躺着写app,一台坐着写网站。

囤了一批咖啡豆过年,用广告费购买了一些想看的书。

封面很好看,最近比较浮躁,应该多看看安静的文字。

有时间需要整理下最近这段时间要修复的bug和需要升级的功能。

这个月的状态关键词是自省。

开始相信一切事物都有趋势性,重要的是坚持下去。