With the introduction of SDK 3.0, a new framework called
Alloy had been integrated with Titanium. This framework uses model-view-controller architecture to break down your application code. While it is fairly simple to learn the new framework, I encountered a bit of slowdown when trying to use the new
Google Maps Android v2 module in it. To help save a lot of time, I'll demonstrate how I used the map module on the new framework.
First, you need to download the map module from
here. After you have downloaded the zip file, you need to put the extracted contents on the root folder of your application.
You can also put the module in the Titanium SDK Home Directory (but for me, I prefer to use the application folder).
After placing the module on the proper folder, you need to edit the
tiapp.xml file on your project root. Find the
<modules/> tag and update it like below:
1: <modules>
2: <module platform="android" version="2.1.0">ti.map</module>
3: </modules>
Find the
<android xmlns:android="http://schemas.android.com/apk/res/android"/> tag and update it as well:
1: <android xmlns:android="http://schemas.android.com/apk/res/android">
2: <manifest>
3: <!-- Allows the API to download data from Google Map servers -->
4: <uses-permission android:name="android.permission.INTERNET"/>
5: <!-- Allows the API to cache data -->
6: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
7: <!-- Use GPS for device location -->
8: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
9: <!-- Use Wi-Fi or mobile connection for device location -->
10: <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
11: <!-- Allows the API to access Google web-based services -->
12: <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
13: <!-- Specify OpenGL ES 2.0 as a requirement -->
14: <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
15: <!-- Replace com.domain.appid with your application ID -->
16: <uses-permission android:name="<com.domain.appid>.permission.MAPS_RECEIVE"/>
17: <permission android:name="<com.domain.appid>.permission.MAPS_RECEIVE"
18: android:protectionLevel="signature"/>
19: <application>
20: <!-- Replace "PASTE YOUR GOOGLE MAPS API KEY HERE" with the Google API key you obtained -->
21: <meta-data android:name="com.google.android.maps.v2.API_KEY"
22: android:value="PASTE YOUR GOOGLE MAPS API KEY HERE"/>
23: </application>
24: </manifest>
25: </android>
Remember to set your api key on the
android:value property of the
meta-data tag on the manifest section of your tiapp.xml file. Also, change the
<com.domain.appid> strings on that same section with your application id found between the
<id></id> tags in the tiapp.xml file.
An alloy application framework code is divided into four parts. Each part can be located in its corresponding folder under the
app directory. For my sample application, I have no need for a model so you can see that it's folder is empty.
Since all alloy application start with the index, you can see the controllers, views, and styles had been created. I don't need customise the view so I just removed the sample code from it:
1: <Alloy>
2: <Window class="container">
3: </Window>
4: </Alloy>
To instantiate the module, just use the require method. In my sample application, I placed it in the index controller. The file can be found inside the
app/controllers/ directory. The code for my index.js file is as follows:
1: var MapModule = require('ti.map');
2: var mapview = MapModule.createView({
3: mapType : MapModule.NORMAL_TYPE,
4: region: {
5: latitude:33.74511,
6: longitude:-84.38993,
7: latitudeDelta:0.01,
8: longitudeDelta:0.01
9: },
10: top : 0,
11: left : 0,
12: right : 0,
13: bottom : 0,
14: animate:true,
15: regionFit:true
16: });
17: $.index.add(mapview);
18: $.index.open();
Just adding the code above on the index controller will already add the MapView on the application window. If you need more info on the MapView, just consult the
API docs.
To see the full source of my sample application go
here