I'm trying to make an application that is a map of my High School, in which the user can click a button to search for either a room or a locker.... My goal was to have the room/locker number correspond to a point on several hidden "number lines" in different areas on the Nib file/display, and when a certain input is received, the corresponding number would light up or show its location (i.e. I don't have to enter every locker location for instance, only the first and last one in each hallway, and the number line generated between the values I enter would represent all the lockers in-between).
I'm using Xcode 4.3.3 if that helps.... Structure-wise I wanted to use the Tabbed-application template and have one tab for the actual Map, one for entering which locker you are looking for, and one for entering which room you want to find. I'm new to iOS programming so I don't know if there is a better way to accomplish something like this, and I am open to any suggestions or advice. Thanks!
You could marry MapKit with your own database in which you'd define the coordinates for rooms, banks of lockers, etc. See Location Awareness Programming Guide which shows how to integrate maps in an app. I can imagine that you could define MKOverlay objects for rooms and ranges of lockers. Or you could simply define MKAnnotation objects for points of interest (cafeteria, etc.).
But some combination of overlays and annotations using MapKit seems like a logical solution.
You might also use the MapBox iOS SDK to do this, along with an interactivity layer as described at http://mapbox.com/tilemill/docs/crashcourse/tooltips/
Related
I have a common use case that I haven't found documentation or examples on. I've added data to my iOS Mapbox app via TileSets in MapBox Studio. I'd like to simply implement a UISearch function on the data in that Tileset using some attribute. For example, I've added a TileSet with 100 different roads in some county in Alaska, and I'd like the user to be able to search for a specific road in the search bar. This seems like it should be easier than I am making it, but I've been working on it for weeks. The original data is geoJSON but I'd like it to be hosted in MapBox Studio so I can update the data without needing to update the app once its released.
Note that this is different than the visibleFeatures function which returns MGLFeatures by location or Rect. I really just need to get all features list from a layer so I can populate it in the UISearch functionality.
Any suggestions? Much appreciated.
Update after talking with Mapbox customer support and folks familiar with how to do this.
Two ways to query features in map:
(1) use the MapBox visibleFeaturesAt() function for features within the rendered map: lots of documentation on this. But this is limited in that it only returns features nearby to your mapview camera. If you want to do a big global search, can't rely on this. So second option is
(2) for global searches, transition to using an external database outside of mapbox. Mapbox isn't designed to be searched up globally for features like this question. If you want to search an attribute that is unrelated map-wise to current view, start using a back-end database like FireBase.
I have an idea of building offline Map for my University Campus (its covering almost 3-4 miles). Like new students or guests can navigate to various blocks in campus. Student can see himself/herself marked on map at current location & can chose destination from pre-defined list of places and application will navigate them.
I have explored alot like maptiles can help me in showing maps. But is there any other efficient way of showing campus map ? And I have no idea how will I navigate user (since being a private property area is out of reach of Google's Maps (or some other) API).
Any suggestions will be helpful. :)
EDITED
Here is Google Map link to my place.
I am studying ArcGIS from last few days, learned to create its 'geodatabase' using 'ArcGIS for Desktop' for rendering offline maps on iPhone.
However, now my concern is how to Navigate user.
And I will welcome any suggestion/idea for accomplishing it using any different approach.
You can achieve that with MapBox.
MapBox is an alternative to GoogleMaps and supports offline maps.
Mapbox iOS SDK
There are three methods available to the Mapbox iOS SDK
for offline maps. With cache-based methods, the RMTileCache for an
RMMapView can be configured to keep map tiles around based on their
count or based on their age in the cache.
Caching based on previous user interaction
Tiles are automatically cached once they are downloaded for display
based on the user’s panning and zooming of the map. For example, if a
user views the map, then zooms out, then zooms back in later when
offline, the original tiles will be present in cache and will display
without need for a network connection.
Proactive background caching for certain map regions
Using RMTileCache and the RMTileCacheBackgroundDelegate protocol, the
developer can enable the user to download a certain bounding box and
zoom range in the background in advance of actually displaying them on
screen. Callbacks trigger, allowing the developer to report progress
to the user or even to cancel a download in progress.
Tiles that already exist in cache will be skipped over during this
background download instead of re-downloaded.
MBTiles prepackaged tiles
Using the MBTiles format for map tile storage, developers can build
apps that read the tiles straight out of the MBTiles file and do not
ever need a network connection. Since MBTiles is an open format, files
can be created manually or with TileMill, as well as many other
applications and utilities such as mbutil.
You need the last one (i.e. MBTiles prepackaged tiles).
Source: https://www.mapbox.com/help/ios-offline/
If you go the OpenStreetMap way (map your property directly in OpenStreeMap) then you can also use the Scout SDK.
It's OSM based and provides full support for offline maps, offline routing & TBT navigation. If you properly connect the road segments then the SDK will be able to create car, bike & pedestrian routes on your data.
While not free, the Scout SDK has a free tier that might be large enough for your particular needs (if not you'll move to a "pay-as-you" model)
Is anyone aware of any SpeechRecognition framework for iOS that allows using it without predefined Vocabulary?
App I'm making right now is a navigation app, and I want to let my users speak their desired Location and Destination. In this case, making a vocabulary consisting of names of all the cities, towns, villages and streets in the entire US would be a tricky one :)
I made a research and some of the best rated frameworks do not support this feature (OpenEars, Ceed Vocal)
Does anyone knows any that I might missed?
I'm working on an iOS app that pulls events from Google Calendar and subsequently generates pins on a map for each event (based on what the event creator fills in for "Location"). The user can select a date range (today, this week, this month, etc.) and see all the events taking place near them over that period.
Problem 1: The app is for my local university, so a majority of the locations will be buildings on campus. These buildings have inconsistent addresses that are often difficult to find, so it would be good if the location "Foo Hall" would result in a pin on that building. Google Maps is capable of doing this, however Apple Maps has no knowledge of the buildings on my school campus.
Problem 2: In an ideal situation, thousands of students would be using this app. Each time they open the app, they could be viewing dozens of pins. Therefore, I'm worried that I may be pushing the limits imposed by Google's geocoding API (definitely the 2500 request limit, and maybe even the 100,000 request limit for the Business API).
So my question is... what would be the best solution for these two problems? Should I create a local database for building names and map them to coordinates? Or is there a way I can overcome the limitations of Google's Geocoding API? Is there a better solution I'm not thinking of?
Thanks for any help!
I would use latitude and longitude coordinates for the buildings and allow for people to add locations to the database if they are meeting somewhere that you have not added already. This way, the pins will drop in the center of the building if you want them to, because you are not relying on an address or on looking up a building name. You simply know that "Foo Hall" is at X latt. and Y long. And if someone selects "Foo Hall" or sees an event at "Foo Hall" there is a perfectly placed pin right in the middle of it on the map. I don't think you need to worry as much about the geocoding API if you are using hardcoded locations for the buildings either, because you won't have to be polling Google to get the building locations.
I would also use some sort of server to store the building locations so they can be updated or added to, either by you or by the users.
That's how I would handle it, good luck!
http://railskits.com/map/
Would you like to launch your own
google map mashup? Need a way to
easily get data onto a map, but don’t
want to have to dig through piles of
poorly documented Google Maps
javascript code?
The Map Rails Kit allows you to deploy
a map mashup instantly. It extracts
all the Google Maps implementation
details, organizes all the
customizations into an easy to use
config file, and reimplements the map
controls, bubbles, and markers so your
app looks unique.
Populating your map with markers
consists of working with a few simple
ActiveRecord models so it’s amazingly
easy to get started. Create marker
records with titles, bubble content,
and location. If you specify just an
address to your markers, your markers
will be automatically geocoded for
you. You can even add tens of
thousands of markers to your maps
easily, and they’ll dynamically load
onto the map only when they are
currently in view as your users
navigate the map.
The Kit includes all the usability
polish that your users would expect in
a commercial map mashup. Their current
map settings are always saved via
session so when they come back to the
page later on, they’re right where
they left off before. For new
visitors, we support hooking into an
ip2location service in order to
initialize their current position. So
they immediately see their current
spot on the map, and can begin
interacting with it.
This Kit was authored by Jacques
Crocker.
This is kind of subjective, but I don't find the Google Maps API nearly as daunting as the blurb makes it out to be. I don't think I'd pay half a grand for an API to the Maps API — especially since you can buy a whole book on the topic for like $15 even if you find Google's docs lacking.
This guy doesn't even make it clear what it is he's selling. He makes the features of using the google maps API with Rails sound more difficult than entire feature set of Google maps itself.
There are plenty of other plugins and/or gems available that do more or less the same thing with slightly more effort involved and the book of course (possibly more than one at this point).
If you want a turnkey solution for stacks of money, .NET or some more commercial platform will have more options. I would avoid using this guys solutions out of selfishness, if he does well they'll be others with more colorful marketing making such grand solutions. After which Google will be clogged with them and we'll have to wade through dozens of such spectacular offerings to find the better, albeit less polished (less advertised) open source versions.
Are there any good googlemaps plugins for rails?