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
Thanks a lot for this tutorial.
ReplyDeleteI have a lot of problems when using my api key and app-id. When I use yours for a test my app works fine. When I exchange those with my api key and app id an empty map appears.
Yesterday I had it working okay, but this morning all went wrong.
Today I regenerated a new api key but no effect.
Any idea what I am doing wrong?
Best regards
Raymond
Netherlands
Hi Raymond,
ReplyDeleteSorry if its a bit late but you should check the manifest located on the platforms folder of the titanium project if it matches the application package (that you used for generating the key) on your google apis console.