├── .gitignore ├── LICENSE ├── README.md ├── androidKML └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── vashisthg │ │ └── androidkml │ │ ├── KmlReader.java │ │ ├── Placemark.java │ │ └── Point.java │ └── res │ ├── drawable-hdpi │ └── ic_launcher.png │ ├── drawable-mdpi │ └── ic_launcher.png │ ├── drawable-xhdpi │ └── ic_launcher.png │ ├── drawable-xxhdpi │ └── ic_launcher.png │ ├── layout │ └── activity_main.xml │ ├── menu │ └── main.xml │ ├── values-sw600dp │ └── dimens.xml │ ├── values-sw720dp-land │ └── dimens.xml │ ├── values-v11 │ └── styles.xml │ ├── values-v14 │ └── styles.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml └── androidKMLSample └── src └── main ├── AndroidManifest.xml ├── assets └── test.kml ├── java └── com │ └── vashisthg │ └── androidkmlsample │ └── KMLActivity.java └── res ├── drawable-hdpi └── ic_launcher.png ├── drawable-mdpi └── ic_launcher.png ├── drawable-xhdpi └── ic_launcher.png ├── drawable-xxhdpi └── ic_launcher.png ├── layout └── activity_kml.xml ├── menu └── kml.xml ├── values-sw600dp └── dimens.xml ├── values-sw720dp-land └── dimens.xml ├── values-v11 └── styles.xml ├── values-v14 └── styles.xml └── values ├── dimens.xml ├── strings.xml └── styles.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/ 13 | gen/ 14 | 15 | # Local configuration file (sdk path, etc) 16 | local.properties 17 | 18 | # Eclipse project files 19 | .classpath 20 | .project 21 | 22 | # Proguard folder generated by Eclipse 23 | proguard/ 24 | 25 | 26 | .DS_Store 27 | 28 | #Eclipse project files 29 | *.pydevproject 30 | .project 31 | 32 | .metadata 33 | bin/** 34 | tmp/** 35 | tmp/**/* 36 | *.tmp 37 | *.bak 38 | local.properties 39 | .classpath 40 | .settings/ 41 | .loadpath 42 | 43 | # External tool builders 44 | .externalToolBuilders/ 45 | 46 | # Locally stored "Eclipse launch configurations" 47 | *.launch 48 | 49 | # CDT-specific 50 | .cproject 51 | 52 | # PDT-specific 53 | .buildpath 54 | 55 | #IntelliJ 56 | 57 | *.iml 58 | *.ipr 59 | *.iws 60 | .idea/ 61 | 62 | 63 | #android-studio 64 | *.gradle 65 | gradle/ 66 | gradlew 67 | gradlew.bat 68 | */build/** 69 | 70 | 71 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 vashisthg 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | AndroidKMLParser 2 | ================ 3 | 4 | Helper library to parse Placemark(s) from KML file and show in Android Map V2 5 | -------------------------------------------------------------------------------- /androidKML/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /androidKML/src/main/java/com/vashisthg/androidkml/KmlReader.java: -------------------------------------------------------------------------------- 1 | package com.vashisthg.androidkml; 2 | 3 | 4 | import android.os.AsyncTask; 5 | import android.util.Log; 6 | 7 | import java.io.IOException; 8 | import java.io.InputStream; 9 | import java.io.Reader; 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | import org.xmlpull.v1.XmlPullParser; 14 | import org.xmlpull.v1.XmlPullParserException; 15 | import org.xmlpull.v1.XmlPullParserFactory; 16 | 17 | 18 | /** 19 | * Created by vashisthg on 23/03/14. 20 | */ 21 | 22 | public class KmlReader { 23 | 24 | 25 | public static interface Callback { 26 | public void onDocumentParsed(List placemarks); 27 | } 28 | 29 | private static final String LOGTAG = "KMLReader"; 30 | private Callback callback; 31 | 32 | public KmlReader(Callback callback) { 33 | this.callback = callback; 34 | } 35 | 36 | public void read(InputStream inputStream) throws IOException, XmlPullParserException { 37 | ReaderTask task = ReaderTask.getReaderTask(inputStream, callback); 38 | task.execute(); 39 | } 40 | 41 | public static class ReaderTask extends AsyncTask> { 42 | 43 | private static final String DOCUMENT_TAG = "Document"; 44 | private static final String PLACEMARK_TAG = "Placemark"; 45 | private static final String PLACEMARK_NAME_TAG = "name"; 46 | private static final String PLACEMARK_POINT_TAG = "Point"; 47 | private static final String PLACEMARK_POINT_COORDINATES_TAG = "coordinates"; 48 | private static final String STYLE_TAG = "Style"; 49 | private static final String STYLE_MAP_TAG = "StyleMap"; 50 | private static final String STYLE_ICON_SCALE_TAG = "scale"; 51 | private static final String STYLE_ICON_HREF_TAG = "href"; 52 | private static final String PLACEMARK_DESCRIPTION_TAG = "description"; 53 | private static final String PLACEMARK_ADDRESS_TAG = "address"; 54 | private static final String PLACEMARK_SNIPPET_TAG = "Snippet"; 55 | private static final String PLACEMARK_XDATA_TAG = "ExtendedData"; 56 | private static final String PLACEMARK_STYLE_URL_TAG = "styleUrl"; 57 | private static final String STYLE_MAP_PAIR_TAG = "Pair"; 58 | private static final String KEY_TAG = "key"; 59 | private static final String POLYGON_TAG = "Polygon"; 60 | public static final String LINE_STRING_TAG = "LineString"; 61 | private static final String LINE_STYLE_TAG = "LineStyle"; 62 | private static final String POLY_STYLE_TAG = "PolyStyle"; 63 | private static final String COLOR_TAG = "color"; 64 | private static final String WIDTH_TAG = "width"; 65 | private static final String DATA_TAG = "Data"; 66 | private static final String VALUE_TAG = "value"; 67 | private static final String KML_TAG = "kml"; 68 | 69 | 70 | private boolean isDocument; 71 | private boolean isPlacemark; 72 | private boolean isPlacemarkName; 73 | private boolean isPlacemarkDescription; 74 | private boolean isPlacemarkPoint; 75 | private boolean isPlacemarkCoordinates; 76 | 77 | private String text; 78 | 79 | private Placemark placemark; 80 | 81 | private List placemarkList; 82 | 83 | private Callback callback; 84 | 85 | InputStream inputStream; 86 | public static ReaderTask getReaderTask(InputStream inputStream, Callback callback) { 87 | ReaderTask task = new ReaderTask(); 88 | task.inputStream = inputStream; 89 | task.callback = callback; 90 | return task; 91 | } 92 | 93 | @Override 94 | protected List doInBackground(Void... params) { 95 | try { 96 | read(inputStream); 97 | } catch (IOException e) { 98 | e.printStackTrace(); 99 | } catch (XmlPullParserException e) { 100 | e.printStackTrace(); 101 | } 102 | return placemarkList; 103 | } 104 | 105 | @Override 106 | protected void onPostExecute(List placemarks) { 107 | super.onPostExecute(placemarks); 108 | callback.onDocumentParsed(placemarks); 109 | } 110 | 111 | public void read(InputStream inputStream) throws IOException, XmlPullParserException { 112 | XmlPullParserFactory factory = XmlPullParserFactory 113 | .newInstance(); 114 | factory.setValidating(false); 115 | XmlPullParser myxml = factory.newPullParser(); 116 | 117 | myxml.setInput(inputStream, null); 118 | processDocument(myxml); 119 | } 120 | 121 | protected void processDocument(XmlPullParser xpp) 122 | throws XmlPullParserException, IOException { 123 | 124 | placemarkList = new ArrayList(); 125 | int eventType = xpp.getEventType(); 126 | 127 | String text = null; 128 | do { 129 | if (eventType == XmlPullParser.START_DOCUMENT) { 130 | Log.d(LOGTAG, "Start document"); 131 | } else if (eventType == XmlPullParser.END_DOCUMENT) { 132 | 133 | Log.d(LOGTAG, "End document"); 134 | } else if (eventType == XmlPullParser.START_TAG) { 135 | processStartElement(xpp); 136 | } else if (eventType == XmlPullParser.END_TAG) { 137 | processEndElement(xpp, text); 138 | } else if (eventType == XmlPullParser.TEXT) { 139 | processText(xpp); 140 | } 141 | eventType = xpp.next(); 142 | } while (eventType != XmlPullParser.END_DOCUMENT); 143 | } 144 | 145 | protected void processStartElement(XmlPullParser xpp) { 146 | String name = xpp.getName(); 147 | processName(name, true); 148 | 149 | } 150 | 151 | private void processName(String name, boolean isStart) { 152 | if(DOCUMENT_TAG.equals(name)) { 153 | isDocument = isStart; 154 | } 155 | 156 | if(PLACEMARK_TAG.equals(name) && isDocument) { 157 | isPlacemark = isStart; 158 | if(isStart) { 159 | placemark = new Placemark(); 160 | } else { 161 | placemarkList.add(placemark); 162 | } 163 | } 164 | 165 | if(PLACEMARK_NAME_TAG.equals(name) && isPlacemark) { 166 | isPlacemarkName = isStart; 167 | } 168 | 169 | if(PLACEMARK_DESCRIPTION_TAG.equals(name) && isPlacemark) { 170 | isPlacemarkDescription = isStart; 171 | } 172 | 173 | if(PLACEMARK_POINT_TAG.equals(name) && isPlacemark) { 174 | isPlacemarkPoint = isStart; 175 | } 176 | 177 | if(PLACEMARK_POINT_COORDINATES_TAG.equals(name) && isPlacemarkPoint) { 178 | isPlacemarkCoordinates = isStart; 179 | } 180 | 181 | 182 | } 183 | 184 | protected void processEndElement(XmlPullParser xpp, String text) { 185 | String name = xpp.getName(); 186 | processName(name, false); 187 | 188 | } 189 | 190 | protected void processText(XmlPullParser xpp) throws XmlPullParserException { 191 | String text = xpp.getText(); 192 | if(text.trim().equals("\n")) { 193 | return; 194 | } 195 | if(isPlacemark && isPlacemarkName) { 196 | placemark.setName(text); 197 | } 198 | 199 | if(isPlacemark && isPlacemarkDescription) { 200 | placemark.setDescription(text); 201 | } 202 | 203 | if(isPlacemark && isPlacemarkCoordinates) { 204 | Point point = new Point(); 205 | String[] coordinates = text.split(","); 206 | point.setLongitude(Double.valueOf(coordinates[0])); 207 | point.setLatitude(Double.valueOf(coordinates[1])); 208 | point.setHeight(Double.valueOf(coordinates[2])); 209 | placemark.setPoint(point); 210 | } 211 | } 212 | } 213 | } -------------------------------------------------------------------------------- /androidKML/src/main/java/com/vashisthg/androidkml/Placemark.java: -------------------------------------------------------------------------------- 1 | package com.vashisthg.androidkml; 2 | 3 | /** 4 | * Created by vashisthg on 23/03/14. 5 | */ 6 | public class Placemark { 7 | 8 | private String name; 9 | private String description; 10 | private Point point; 11 | 12 | public Placemark() { 13 | 14 | } 15 | 16 | public Placemark(String name, Point point, String description) { 17 | this.name = name; 18 | this.point = point; 19 | this.description = description; 20 | } 21 | 22 | 23 | public static class PlacemarkBuilder { 24 | private String name; 25 | private Point point; 26 | private String description; 27 | 28 | public PlacemarkBuilder setName(String name) { 29 | this.name = name; 30 | return this; 31 | } 32 | 33 | public PlacemarkBuilder setPoint(Point point) { 34 | this.point = point; 35 | return this; 36 | } 37 | 38 | public PlacemarkBuilder setDescription(String description) { 39 | this.description = description; 40 | return this; 41 | } 42 | 43 | public Placemark createPlacemark() { 44 | return new Placemark(name, point, description); 45 | } 46 | } 47 | 48 | public String getName() { 49 | return name; 50 | } 51 | 52 | public void setName(String name) { 53 | this.name = name; 54 | } 55 | 56 | public Point getPoint() { 57 | return point; 58 | } 59 | 60 | public void setPoint(Point point) { 61 | this.point = point; 62 | } 63 | 64 | public String getDescription() { 65 | return description; 66 | } 67 | 68 | public void setDescription(String description) { 69 | this.description = description; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /androidKML/src/main/java/com/vashisthg/androidkml/Point.java: -------------------------------------------------------------------------------- 1 | package com.vashisthg.androidkml; 2 | 3 | /** 4 | * Created by vashisthg on 23/03/14. 5 | */ 6 | public class Point { 7 | private double longitude; 8 | private double latitude; 9 | private double height; 10 | 11 | public double getLatitude() { 12 | return latitude; 13 | } 14 | 15 | public void setLatitude(double latitude) { 16 | this.latitude = latitude; 17 | } 18 | 19 | public double getHeight() { 20 | return height; 21 | } 22 | 23 | public void setHeight(double height) { 24 | this.height = height; 25 | } 26 | 27 | public double getLongitude() { 28 | 29 | return longitude; 30 | } 31 | 32 | public void setLongitude(double longitude) { 33 | this.longitude = longitude; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /androidKML/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKML/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKML/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKML/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKML/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKML/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKML/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKML/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKML/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /androidKML/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values-sw720dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 128dp 8 | 9 | 10 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AndroidKML 5 | Settings 6 | Hello world! 7 | 8 | 9 | -------------------------------------------------------------------------------- /androidKML/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 25 | 26 | 27 | 28 | 31 | 32 | 35 | 36 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/assets/test.kml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | New York City 6 | New York City 7 | 8 | -74.006393,40.714172,0 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/java/com/vashisthg/androidkmlsample/KMLActivity.java: -------------------------------------------------------------------------------- 1 | package com.vashisthg.androidkmlsample; 2 | 3 | import android.os.Bundle; 4 | import android.app.Activity; 5 | import android.support.v4.app.FragmentActivity; 6 | import android.util.Log; 7 | import android.view.Menu; 8 | 9 | import com.google.android.gms.maps.CameraUpdateFactory; 10 | import com.google.android.gms.maps.GoogleMap; 11 | import com.google.android.gms.maps.SupportMapFragment; 12 | import com.google.android.gms.maps.model.LatLng; 13 | import com.google.android.gms.maps.model.MarkerOptions; 14 | import com.vashisthg.androidkml.KmlReader; 15 | import com.vashisthg.androidkml.Placemark; 16 | 17 | import org.xmlpull.v1.XmlPullParserException; 18 | 19 | import java.io.IOException; 20 | import java.io.InputStream; 21 | import java.util.List; 22 | 23 | /** 24 | * Created by vashisthg on 23/03/14. 25 | */ 26 | 27 | public class KMLActivity extends FragmentActivity { 28 | 29 | private static final String LOGTAG = "KMLActivity"; 30 | private GoogleMap map; 31 | 32 | @Override 33 | protected void onCreate(Bundle savedInstanceState) { 34 | super.onCreate(savedInstanceState); 35 | setContentView(R.layout.activity_kml); 36 | 37 | map = ((SupportMapFragment) getSupportFragmentManager() 38 | .findFragmentById(R.id.map)).getMap(); 39 | startReadingKml(); 40 | } 41 | 42 | private void startReadingKml() { 43 | try { 44 | KmlReader reader = new KmlReader(kmlReaderCallback); 45 | InputStream fs = getAssets().open("test.kml"); 46 | reader.read(fs); 47 | } catch (IOException e) { 48 | e.printStackTrace(); 49 | } catch (XmlPullParserException e) { 50 | e.printStackTrace(); 51 | } 52 | } 53 | 54 | @Override 55 | public boolean onCreateOptionsMenu(Menu menu) { 56 | getMenuInflater().inflate(R.menu.kml, menu); 57 | return true; 58 | } 59 | 60 | private KmlReader.Callback kmlReaderCallback = new KmlReader.Callback() { 61 | @Override 62 | public void onDocumentParsed(List placemarks) { 63 | Log.d(LOGTAG, "onDocumentParsed"); 64 | LatLng latLng = null; 65 | 66 | for(Placemark placemark : placemarks) { 67 | latLng = new LatLng(placemark.getPoint().getLatitude(), 68 | placemark.getPoint().getLongitude()); 69 | 70 | if(null == map) { 71 | throw new NullPointerException("map is null"); 72 | } 73 | map.addMarker(new MarkerOptions() 74 | .title(placemark.getName()) 75 | .snippet(placemark.getDescription()) 76 | .position(latLng) 77 | ); 78 | } 79 | 80 | if(null != latLng) { 81 | map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 13)); 82 | } 83 | } 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKMLSample/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKMLSample/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKMLSample/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vashisthg/AndroidKMLParser/341b75325787e9b12d0c66e67d62bac6b5cae581/androidKMLSample/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/layout/activity_kml.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/menu/kml.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values-sw720dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 128dp 8 | 9 | 10 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AndroidKMLSample 5 | Settings 6 | Hello world! 7 | 8 | 9 | -------------------------------------------------------------------------------- /androidKMLSample/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | --------------------------------------------------------------------------------