Для android в google maps api v2 его отображение всей земли, следуя всем шагам отсюда http://mobisys.in/blog/2012/12/google-rolls-out-android-maps-api-v2/, могу ли я увеличить маршрут от текущего расположение к заданной величине и долготе, и проблема в том, что мне нужно показать несколько маршрутов, как это возможно? прямо сейчас я ничего не делаю в своей деятельности, но я думаю, что мне нужно сделать некоторую кодировку для рисования маршрутов. Как я могу это сделать? Большое вам спасибо за ваши ответы, и, пожалуйста, предоставьте мне любой учебник, если вы знаете. еще раз спасибо.в Android google maps api v2 для 4.0, показать маршруты от текущего местоположения до заданного lat long
ответ
Наконец я решил эту проблему, используя этот код ..: попробовать этот класс:
import java.io.InputStream;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.google.android.gms.maps.model.LatLng;
import android.content.Context;
import android.util.Log;
public class GMapV2Direction {
public final static String MODE_DRIVING = "driving";
public final static String MODE_WALKING = "walking";
public GMapV2Direction() { }
public Document getDocument(LatLng start, LatLng end, String mode) {
String url = "http://maps.googleapis.com/maps/api/directions/xml?"
+ "origin=" + start.latitude + "," + start.longitude
+ "&destination=" + end.latitude + "," + end.longitude
+ "&sensor=false&units=metric&mode=driving";
try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
HttpResponse response = httpClient.execute(httpPost, localContext);
InputStream in = response.getEntity().getContent();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(in);
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public String getDurationText (Document doc) {
NodeList nl1 = doc.getElementsByTagName("duration");
Node node1 = nl1.item(0);
NodeList nl2 = node1.getChildNodes();
Node node2 = nl2.item(getNodeIndex(nl2, "text"));
Log.i("DurationText", node2.getTextContent());
return node2.getTextContent();
}
public int getDurationValue (Document doc) {
NodeList nl1 = doc.getElementsByTagName("duration");
Node node1 = nl1.item(0);
NodeList nl2 = node1.getChildNodes();
Node node2 = nl2.item(getNodeIndex(nl2, "value"));
Log.i("DurationValue", node2.getTextContent());
return Integer.parseInt(node2.getTextContent());
}
public String getDistanceText (Document doc) {
NodeList nl1 = doc.getElementsByTagName("distance");
Node node1 = nl1.item(0);
NodeList nl2 = node1.getChildNodes();
Node node2 = nl2.item(getNodeIndex(nl2, "text"));
Log.i("DistanceText", node2.getTextContent());
return node2.getTextContent();
}
public int getDistanceValue (Document doc) {
NodeList nl1 = doc.getElementsByTagName("distance");
Node node1 = nl1.item(0);
NodeList nl2 = node1.getChildNodes();
Node node2 = nl2.item(getNodeIndex(nl2, "value"));
Log.i("DistanceValue", node2.getTextContent());
return Integer.parseInt(node2.getTextContent());
}
public String getStartAddress (Document doc) {
NodeList nl1 = doc.getElementsByTagName("start_address");
Node node1 = nl1.item(0);
Log.i("StartAddress", node1.getTextContent());
return node1.getTextContent();
}
public String getEndAddress (Document doc) {
NodeList nl1 = doc.getElementsByTagName("end_address");
Node node1 = nl1.item(0);
Log.i("StartAddress", node1.getTextContent());
return node1.getTextContent();
}
public String getCopyRights (Document doc) {
NodeList nl1 = doc.getElementsByTagName("copyrights");
Node node1 = nl1.item(0);
Log.i("CopyRights", node1.getTextContent());
return node1.getTextContent();
}
public ArrayList<LatLng> getDirection (Document doc) {
NodeList nl1, nl2, nl3;
ArrayList<LatLng> listGeopoints = new ArrayList<LatLng>();
nl1 = doc.getElementsByTagName("step");
if (nl1.getLength() > 0) {
for (int i = 0; i < nl1.getLength(); i++) {
Node node1 = nl1.item(i);
nl2 = node1.getChildNodes();
Node locationNode = nl2.item(getNodeIndex(nl2, "start_location"));
nl3 = locationNode.getChildNodes();
Node latNode = nl3.item(getNodeIndex(nl3, "lat"));
double lat = Double.parseDouble(latNode.getTextContent());
Node lngNode = nl3.item(getNodeIndex(nl3, "lng"));
double lng = Double.parseDouble(lngNode.getTextContent());
listGeopoints.add(new LatLng(lat, lng));
locationNode = nl2.item(getNodeIndex(nl2, "polyline"));
nl3 = locationNode.getChildNodes();
latNode = nl3.item(getNodeIndex(nl3, "points"));
ArrayList<LatLng> arr = decodePoly(latNode.getTextContent());
for(int j = 0 ; j < arr.size() ; j++) {
listGeopoints.add(new LatLng(arr.get(j).latitude, arr.get(j).longitude));
}
locationNode = nl2.item(getNodeIndex(nl2, "end_location"));
nl3 = locationNode.getChildNodes();
latNode = nl3.item(getNodeIndex(nl3, "lat"));
lat = Double.parseDouble(latNode.getTextContent());
lngNode = nl3.item(getNodeIndex(nl3, "lng"));
lng = Double.parseDouble(lngNode.getTextContent());
listGeopoints.add(new LatLng(lat, lng));
}
}
return listGeopoints;
}
private int getNodeIndex(NodeList nl, String nodename) {
for(int i = 0 ; i < nl.getLength() ; i++) {
if(nl.item(i).getNodeName().equals(nodename))
return i;
}
return -1;
}
private ArrayList<LatLng> decodePoly(String encoded) {
ArrayList<LatLng> poly = new ArrayList<LatLng>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;
LatLng position = new LatLng((double) lat/1E5, (double) lng/1E5);
poly.add(position);
}
return poly;
}
}
вы можете получить образец кода здесь
LatLng fromPosition = new LatLng(13.687140112679154, 100.53525868803263);
LatLng toPosition = new LatLng(13.683660045847258, 100.53900808095932);
GoogleMap mMap = ((SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
GMapV2Direction md = new GMapV2Direction();
Document doc = md.getDocument(fromPosition, toPosition, GMapV2Direction.MODE_DRIVING);
ArrayList<LatLng> directionPoint = md.getDirection(doc);
PolylineOptions rectLine = new PolylineOptions().width(3).color(Color.RED);
for(int i = 0 ; i < directionPoint.size() ; i++) {
rectLine.add(directionPoint.get(i));
}
mMap.addPolyline(rectLine);
: - https://docs.google.com/uc?export=download&id=0B0MdROeR0jbvWVVNUV9jbk1OeEE
Карты Android api V2 имеют Polyline
класс, чтобы нарисовать маршрут на карте.
Polyline line1 = map.addPolyline(new PolylineOptions()
.add(new LatLng(50.5, 34.1), new LatLng(40.7, -74.0))
.width(5)
.color(0xFFFF0000));
эй Митеш, спасибо за ваш ответ, я буду использовать его позже, но я использую этот похожий учебник, по этой ссылке http://wptrafficanalyzer.in/blog/showing-current-location-in-google-maps- используя-api-v2-with-supportmapfragment /, но все же его не оказывает никакого влияния на показ только полной карты google, теперь текущее местоположение, я пытаюсь сделать это за последние полчаса, никаких ошибок не возникает, ничего особенного не происходит на трассировке стека, – UdiT
вы получаете текущую кнопку местоположения на карте? – moDev
В xml-макете не определены кнопки, поэтому я не получаю никаких кнопок, в этой ссылке они показывают, чтобы получить текущее местоположение напрямую, я думаю. – UdiT
- 1. Google Maps Lat/Long Accuracy, V2-Android
- 2. API Google Maps API V2 Увеличить до текущего местоположения
- 3. google Maps v2 API для определения местоположения android null
- 4. Использования Google Map API v2 рисования маршрута от текущего местоположения до места назначения в Android
- 5. Получение текущего местоположения Lat Long как 0.0 в Android google maps
- 6. Район/Граница lat long местоположения данной области
- 7. Невозможно найти long/lat, используя google maps api на android
- 8. Google maps api v2 настроить маркер местоположения
- 9. android google maps пешеходные маршруты
- 10. Maxlength в lat и long google maps
- 11. Android google maps API v2
- 12. Google Maps API Android v2
- 13. Как плавно продолжать перемещение текущего маркера местоположения в Google Maps v2 android
- 14. Получить google maps getplace lat и long
- 15. Get Lat Long от Google
- 16. JavaScript API Google Maps Как хранить местоположение в режиме lat/long до глобальной переменной
- 17. API Google Map API v2 - Получите расстояние от вашего текущего местоположения до известных мест
- 18. Convert Lat Long для адреса Google Maps ApiV2
- 19. Показать маршрут в Google Maps API v2 на Android
- 20. Google Maps API v2
- 21. Google Maps API JS: пытается преобразовать адрес в Lat Long
- 22. Как удалить полилинии в Google Maps API Android v2?
- 23. Android IllegalStateException с google maps api v2
- 24. Захват местоположения пользователя с помощью google maps v2 на Android?
- 25. Передача массива Lat Long в WayPoints API Google Maps 3
- 26. Геокодирование Google Maps APi не возвращает lat и long
- 27. Android Google Maps API 2 JSON маршруты
- 28. Android API Google Maps v2: получить мое местоположение для оповещения
- 29. google maps api v2 показать пусто
- 30. API геокодирования Google Maps (как получить Lat/Long)
Follow этот удивительный [учебник] (http://wptrafficanalyzer.in/blog/gps-and-google-map-in-android-applications-series/) – moDev
Спасибо, господин, я посмотрю. Кажется, у него есть точный ответ, который я ищу. :) – UdiT