好的。我不是一個java或android程序員,但我寫了一個地圖應用程序的代碼,其中顯示公交車站的巴士路線使用特定的顏色和標記重疊。該代碼有效,但路線將需要更多的點跟隨巴士路線,主要是具有不同的標記和折線LatLng值的代碼。我認爲在解析一些XML到一個數組和一個循環,但是:1)在遵循了很多教程後,我不知道如何以我想要的方式,2)我preffer不使用外部XML,因爲我想我的應用程序沒有太多的互聯網deppendant(僅用於緩存的地圖,或更新路由XML的)將XML解析爲更高效的地圖代碼?
的XML:
<?xml version="1.0" encoding="utf-8"?>
<iLPbus>
<iLPbus_Route conuter="1">
<iLPbus_Route_name>Inca Llojeta->PUC</iLPbus_Route_name>
<iLPbus_Route_icon>R.drawable.ic_illojeta</iLPbus_Route_icon>
<iLPbus_Route_Polyline>
<poly_color>0xff81488e</poly_color>
<point counter="1">
<lat>-16.529183</lat>
<lng>-68.143298</lng>
</point>
<point counter="2">
<lat>-16.534203</lat>
<lng>-68.14593</lng>
</point>
<point counter="3">
<lat>-16.532493</lat>
<lng>-68.142459</lng>
</point>
<point counter="4">
<lat>-16.533225</lat>
<lng>-68.140485</lng>
</point>
<point counter="5">
<lat>-16.533513</lat>
<lng>-68.137939</lng>
</point>
<point counter="6">
<lat>-16.534187</lat>
<lng>-68.134404</lng>
</point>
<point counter="7">
<lat>-16.533058</lat>
<lng>-68.131521</lng>
</point>
</iLPbus_Route_Polyline>
<iLPbus_BusStops counter="1">
<lat>-16.529183</lat>
<lng>-68.143298</lng>
<name>R. Tupac Katari</name>
</iLPbus_BusStops>
<iLPbus_BusStops counter="2">
<cords>
<lat>13.72331</lat>
<lng>100.78453999999999</lng>
</cords>
<name>Raul Salmón</name>
</iLPbus_BusStops>
</iLPbus_Ruta>
</iLPbus>
Java的:(前實現解析器)
import android.app.Activity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;
public class MapaMoradoaPUCActivity extends Activity {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mapa_morado_apuc);
Bundle extras = getIntent().getExtras();
setUpMapIfNeeded(extras);
}
protected void onResume(Object extras) {
super.onResume();
setUpMapIfNeeded(extras);
}
private void setUpMap(Object extras) {
// RUTA MORADA Inca Llojeta hacia PUC
LatLng RM01aPUC = new LatLng(-16.529183, -68.143298);
LatLng RM02aPUC = new LatLng(-16.534203, -68.14593);
LatLng RM03aPUC = new LatLng(-16.532493, -68.142459);
LatLng RM04aPUC = new LatLng(-16.533225, -68.140485);
LatLng RM05aPUC = new LatLng(-16.533513, -68.137939);
LatLng RM06aPUC = new LatLng(-16.534187, -68.134404);
LatLng RM07aPUC = new LatLng(-16.533058, -68.131521);
LatLng RM08aPUC = new LatLng(-16.529911, -68.128731);
LatLng RM09aPUC = new LatLng(-16.531228, -68.126199);
LatLng RM10aPUC = new LatLng(-16.526527, -68.126339);
LatLng RM11aPUC = new LatLng(-16.525992, -68.123598);
LatLng RM12aPUC = new LatLng(-16.523153, -68.1218);
LatLng RM13aPUC = new LatLng(-16.520057, -68.125395);
LatLng RM14aPUC = new LatLng(-16.517146, -68.121607);
LatLng RM15aPUC = new LatLng(-16.514277, -68.11444);
LatLng RM16aPUC = new LatLng(-16.503846, -68.12856);
LatLng RM17aPUC = new LatLng(-16.500287, -68.132014);
LatLng RM18aPUC = new LatLng(-16.500719, -68.130083);
mMap.setMyLocationEnabled(true);
if (extras != null) {
int number = getIntent().getExtras().getInt("keyMap");
if (number == 1) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM01aPUC, 16));
}
if (number == 2) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM02aPUC, 16));
}
if (number == 3) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM03aPUC, 16));
}
if (number == 4) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM04aPUC, 16));
}
if (number == 5) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM05aPUC, 16));
}
if (number == 6) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM06aPUC, 16));
}
if (number == 7) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM07aPUC, 16));
}
if (number == 8) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM08aPUC, 16));
}
if (number == 9) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM09aPUC, 16));
}
if (number == 10) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM10aPUC, 16));
}
if (number == 11) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM11aPUC, 16));
}
if (number == 12) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM12aPUC, 16));
}
if (number == 13) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM13aPUC, 16));
}
if (number == 14) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM14aPUC, 16));
}
if (number == 15) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM15aPUC, 16));
}
if (number == 16) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM16aPUC, 16));
}
if (number == 17) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM17aPUC, 16));
}
if (number == 18) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(RM18aPUC, 16));
}
}
// Trazar Rutas
// RUTA MORADA Inca Llojeta hacia PUC
mMap.addPolyline(new PolylineOptions().geodesic(true).color(0xff81488e).width(5)
.add(RM01aPUC).add(RM02aPUC).add(RM03aPUC).add(RM04aPUC)
.add(RM05aPUC).add(RM06aPUC).add(RM07aPUC).add(RM08aPUC)
.add(RM09aPUC).add(RM10aPUC).add(RM11aPUC).add(RM12aPUC)
.add(RM13aPUC).add(RM14aPUC).add(RM15aPUC).add(RM16aPUC)
.add(RM17aPUC).add(RM18aPUC));
// Añadir marcadores
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM01aPUC).snippet("Inka Llojeta->PUC")
.title("R. Tupac Katari"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM02aPUC).snippet("Inka Llojeta->PUC")
.title("Raul Salmón"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM03aPUC).snippet("Inka Llojeta->PUC")
.title("UE José Santos Vargas"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM04aPUC).snippet("Inka Llojeta->PUC")
.title("Final Buenos Aires"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM05aPUC).snippet("Inka Llojeta->PUC")
.title("Centro de Salud El Vergel"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM06aPUC).snippet("Inka Llojeta->PUC")
.title("Vergelito"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM07aPUC).snippet("Inka Llojeta->PUC")
.title("Tomillo"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM08aPUC).snippet("Inka Llojeta->PUC")
.title("Las Petunias"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM09aPUC).snippet("Inka Llojeta->PUC")
.title("Las Acacias"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM10aPUC).snippet("Inka Llojeta->PUC")
.title("H. Nuestra Sra. de La Paz"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM11aPUC).snippet("Inka Llojeta->PUC")
.title("UE Boliviano Japones"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM12aPUC).snippet("Inka Llojeta->PUC")
.title("R. Cementerio Jardín"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM13aPUC).snippet("Inka Llojeta->PUC")
.title("Emaverde"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM14aPUC).snippet("Inka Llojeta->PUC")
.title("Puentes Trillizos"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM15aPUC).snippet("Inka Llojeta->PUC")
.title("4to Centenario"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM16aPUC).snippet("Inka Llojeta->PUC").title("UMSA"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM17aPUC).snippet("Inka Llojeta->PUC")
.title("Plaza Camacho"));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_illojeta))
.position(RM18aPUC).snippet("Inka Llojeta->PUC")
.title("Simón Bolivar"));
}
private void setUpMapIfNeeded(Object extras) {
// Do a null check to confirm that we have not already instantiated the
// map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.paradasmoradas)).getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap(extras);
}
}
}
}
你應該建議什麼?