【问题标题】:android using maps offline precatche to mark road between two locations?android使用地图离线precatch来标记两个位置之间的道路?
【发布时间】:2012-01-31 12:22:39
【问题描述】:

我如何启动 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;*/

}

【问题讨论】:

    标签: android google-maps map google-maps-api-3 mapping


    【解决方案1】:

    Google 地图库不支持切片缓存。我认为它甚至违反了 TOS。

    您尝试使用OSM library for Android。你可以在这个库中使用离线地图,有一个叫做OsmAndMapCreator的工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多