확인. 나는 자바 또는 안드로이드 프로그래머가 아니지만 버스 정류장을 보여주는 버스 경로가 특정 색상과 마커를 사용하여 중복되는지도 앱용 코드를 작성합니다. 코드는 작동하지만 버스 길을 따라 가려면 더 많은 포인트가 필요하며 주로 마커와 폴리 라인에 대한 LatLng 값이 다른 동일한 코드가 필요합니다. 나는 XML을 배열과 루프로 파싱하는 것으로 생각한다. 그러나 : 1) 많은 튜토리얼을 따른 후에 내가 원하는 방식으로 어떻게해야하는지 모르겠다. 2) 필자가 원하는대로 외부 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>
자바가 : (이전 구현 파서)
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);
}
}
}
}
당신은 무엇을 추천해야합니까 ??