Skip to content

Instantly share code, notes, and snippets.

View mzeeshanid's full-sized avatar

Muhammad Zeeshan mzeeshanid

View GitHub Profile
@mzeeshanid
mzeeshanid / DirectedPolylineViewController.swift
Last active February 12, 2020 05:57
Directed GMSPolyline hard coded GeoJSON
var geoJson: [[CLLocationDegrees]] = [
[-118.2608582418, 34.0801788388],
[-118.2605869562, 34.0800219712],
[-118.2601800293, 34.0797865312],
[-118.2596010753, 34.0794525362],
[-118.2586218209, 34.078885827],
[-118.2576888882, 34.0783437419],
[-118.2567295072, 34.0777879666],
[-118.2568708641, 34.0775788277],
[-118.256982542, 34.0773834912],
@mzeeshanid
mzeeshanid / DirectedPolylineViewController.swift
Last active February 12, 2020 05:56
Directed polyline function
func drawPolyline() {
//Step 1:
let coordinates = self.geoJson.map({CLLocationCoordinate2D(latitude: $0.last!, longitude: $0.first!)})
//Step 2:
let chunkSize = 3
let chunkedCoordinates = coordinates.chunked(into: chunkSize)
//Step 3:
//
// DirectedPolylineViewController.swift
//
//
// Created by Mac OS X on 11/02/2020.
// Copyright © 2020 Muhammad Zeeshan. All rights reserved.
//
import UIKit
import GoogleMaps
@mzeeshanid
mzeeshanid / properties.swift
Last active April 5, 2020 10:30
Properties for Splash Animation
var images: [UIImage] = []
var currentIndex: Int = 0
var isScreenVisible: Bool = false
@mzeeshanid
mzeeshanid / ViewController.swift
Created April 5, 2020 11:19
Synchronised splash animation
//
// ViewController.swift
// splashanimation
//
// Created by Muhammad Zeeshan on 05/04/2020.
// Copyright © 2020 mzeeshanid. All rights reserved.
//
import UIKit
@mzeeshanid
mzeeshanid / stringsearch.swift
Created April 7, 2020 18:54
Search for string with before and after limit
let limit = 13
let queryString = "text"
let targettedString = "Lorem Ipsum is simply dummy text of the printing and typesetting"
let queryRange = targettedString.range(of: queryString)
let distanceToStart = max(self.distance(from: queryRange.lowerBound, to: self.startIndex), -limit)
let distanceToEnd = min(self.distance(from: queryRange.upperBound, to: self.endIndex), limit)
let start = self.index(queryRange.lowerBound, offsetBy: distanceToStart)
@mzeeshanid
mzeeshanid / Models.swift
Last active December 30, 2020 10:41
class declaration for models
class Product {
var id: Int
var name: String
var image: String
var variants: [Variant]
}
class Variant {
var id: Int
@mzeeshanid
mzeeshanid / ProductExt.swift
Created December 30, 2020 10:45
Product extension
extension Product {
func startingPrice() -> Double {
return self.variants.min(by: {$0.price < $1.price})?.price ?? 0.0
}
}
@mzeeshanid
mzeeshanid / ReverseGeocdingViewModel.swift
Created February 24, 2022 11:25
GMSGeocoder example
class ReverseGeoCodingViewModel {
func reverseGeoCodeLocation(_ coordinate: CLLocationCoordinate2D,
completion: @escaping GMSReverseGeocodeCallback) {
let geocoder = GMSGeocoder()
geocoder.reverseGeocodeCoordinate(coordinate) { response, error in
completion(response, error)
}
}
}
@mzeeshanid
mzeeshanid / ReverseGeoCodingViewModel.swift
Created February 24, 2022 11:33
GMSGeocoder entertain last request only
class ReverseGeoCodingViewModel {
var requestIdentifier: Int = 0
func reverseGeoCodeLocation(_ coordinate: CLLocationCoordinate2D,
completion: @escaping GMSReverseGeocodeCallback) {
self.requestIdentifier += 1
let currentRequestIdentifier = self.requestIdentifier
let geocoder = GMSGeocoder()