如何启动mpas而不是包含precatch功能API而不是mapview,因为我想使用离线功能 这是我的班级,任何信息都可以提供帮助
公共类mapactivity扩展了MapActivity {
MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapsxml);
MapView mapView = (MapView) findViewById(R.id.mapView);
Bundle b = getIntent().getExtras();
String Mylat = b.getString("Mylat");
String Mylon = b.getString("Mylon");
String Rlat = b.getString("Rlat");
String Rlon = b.getString("Rlon");
double src_lat =Double.valueOf(Mylat);
double src_long =Double.valueOf(Mylon);
double dest_lat = Double.valueOf(Rlat);
double dest_long = Double.valueOf(Rlon);
GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),
(int) (src_long * 1E6));
GeoPoint destGeoPoint = new GeoPoint((int) (dest_lat * 1E6),
(int) (dest_long * 1E6));
DrawPath(srcGeoPoint, destGeoPoint, Color.GREEN, mapView);
mapView.getController().animateTo(srcGeoPoint);
mapView.getController().setZoom(15);
Toast.makeText(getBaseContext(), "Latitude: " + Rlat+ "Longitude: " +Rlon, Toast.LENGTH_SHORT).show();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private void DrawPath(GeoPoint src,GeoPoint dest, int color, MapView mMapView01)
{
// connect to map web service
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com/maps?"+"&saddr="+ Double.toString((double)src.getLatitudeE6()/1.0E6 )+","+Double.toString((double)src.getLongitudeE6()/1.0E6 )+"&daddr="+Double.toString((double)dest.getLatitudeE6()/1.0E6 )+","+Double.toString((double)dest.getLongitudeE6()/1.0E6 )+"&ie=UTF8&0&om=0&output=kml");
/*urlString.append("&saddr=");//from
urlString.append( Double.toString((double)src.getLatitudeE6()/1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)src.getLongitudeE6()/1.0E6 ));
urlString.append("&daddr=");//to
urlString.append( Double.toString((double)dest.getLatitudeE6()/1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)dest.getLongitudeE6()/1.0E6 ));
urlString.append("&ie=UTF8&0&om=0&output=kml"); */
Log.d("xxx","URL="+urlString.toString());
// get the kml (XML) doc. And parse it to get the coordinates(direction route).
Document doc = null;
HttpURLConnection urlConnection= null;
URL url = null;
try
{
url = new URL(urlString.toString());
urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlConnection.getInputStream());
if(doc.getElementsByTagName("GeometryCollection").getLength()>0)
{
//String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getFirstChild().getNodeValue() ;
Log.d("xxx","path="+ path);
String [] pairs = path.split(" ");
String[] lngLat = pairs[0].split(","); // lngLat[0]=longitude lngLat[1]=latitude lngLat[2]=height
// src
GeoPoint startGP = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(startGP,startGP,1));
GeoPoint gp1;
GeoPoint gp2 = startGP;
for(int i=1;i<pairs.length;i++) // the last one would be crash
{
lngLat = pairs[i].split(",");
gp1 = gp2;
// watch out! For GeoPoint, first:latitude, second:longitude
gp2 = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(gp1,gp2,2,color));
Log.d("xxx","pair:" + pairs[i]);
}
mMapView01.getOverlays().add(new MyOverLay(dest,dest, 3)); // use the default color
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}
}
/*Double src_lat =Double.valueOf(Mylat); //31.964396; // the testing source
Double src_long =Double.valueOf(Mylon);//35.887871;
Double dest_lat = Double.valueOf(Rlat);//32.55289; // the testing destination
Double dest_long = Double.valueOf(Rlon);//35.857658;
double src_lat =Double.valueOf(Mylat.trim()).doubleValue(); //31.964396; // the testing source
double src_long =Double.valueOf(Mylon.trim()).doubleValue();//35.887871;
double dest_lat = Double.valueOf(Rlat.trim()).doubleValue();//32.55289; // the testing destination
double dest_long = Double.valueOf(Rlon.trim()).doubleValue();//35.857658;
double src_lat =Double.valueOf(ml.trim()).doubleValue(); // the testing source
double src_long = Double.valueOf(mlon.trim()).doubleValue();
double dest_lat = Double.valueOf(dl.trim()).doubleValue();//32.55289; // the testing destination
double dest_long = Double.valueOf(dlon.trim()).doubleValue();//35.857658;*/
}
答案 0 :(得分:0)
Google地图库不支持缓存切片。我认为这甚至违反了服务条款。
您尝试使用OSM library for Android。您可以在此库中使用离线地图,有一个名为OsmAndMapCreator的工具。