दिलचस्प पोस्ट
सदिश के तत्वों के सभी संभावित संयोजनों की सूची उत्पन्न करें वेब अनुप्रयोगों में एनिमेटेड कर्सर समर्थन? Vimeo से img थंबनेल जाओ? SQL सर्वर: MAX (DATE) के साथ केवल पंक्तियां चुनें नोड जे एस ईोननरेसेटी जावा नियमित अभिव्यक्ति और डॉलर का चिह्न डेटा एक्सेस के बाद सी # में Excel आवेदन प्रक्रिया बंद करना नरम कीबोर्ड पर "सुझाव" प्रदर्शित करने में अक्षम कैसे करें MVVM में देखने के लिए कुछ कमांड दें चयनित कॉलमों के लिए तालिका में एनए वैल्यू कैसे बदल सकता है? data.frame, data.table मुझे OSV पर JAVA_HOME को क्या सेट करना चाहिए? यह पता कैसे करें कि कोई आइटम std :: vector में मौजूद है? Jquery: मूसुडाउन प्रभाव (जबकि बाएं क्लिक नीचे आयोजित किया जाता है) एंड्रॉइड- जेसन एरे और जेएसएएन ऑब्जेक्ट बनाएं GetResource का उपयोग कर एक संसाधन प्राप्त करें ()

Google मानचित्र आउटपुट = किमील टूट गया?

सब

मैं अपने आईफोन ऐप में गूगल मैप्स केएमएल आउटपुट का इस्तेमाल कर रहा था। अगर मैं अपने ब्राउज़र पर निम्नलिखित टाइप करता हूं, तो वह कि.एल.एल फाइल को सहेजने का विकल्प देती थी:

http://maps.google.com/maps?q=restaurant&mrt=yp&num=10&sll=37.786945,-122.406013&radius=5&output=kml 

लेकिन आज अचानक, यह एक HTML फ़ाइल वापस कर रहा है। क्या हुआ? कोई विचार? मैं इसे अपने iPhone ऐप में उपयोग करता हूं और यह त्रुटि फेंक रहा है क्योंकि यह एक वैध xml लौटा नहीं है जाहिर है….

धन्यवाद, एमबीएच

वेब के समाधान से एकत्रित समाधान "Google मानचित्र आउटपुट = किमील टूट गया?"

KML फ़ाइल को पार्स करके Google की ओर से निकालने का यह तरीका 27 जुलाई 2012 से अब उपलब्ध नहीं है (क्योंकि Google ने Google दिशानिर्देश को पुनः प्राप्त करने की संरचना बदल दी है, अब आप इसे केवल JSON या XML द्वारा प्राप्त कर सकते हैं), यह समय है अपने कोड को KML के बजाय JSON में माइग्रेट करें

जवाब देखें (केवल एंड्रॉइड के लिए, शायद आईफोन एल्गोरिदम को समझ सकता है और इसे लागू कर सकता है) मेरे अपने प्रश्न में यहाँ ।

Google ने कुछ बदल दिया है और अब केवल प्रमुख परिवर्तन दिखाता है । लेकिन जब JSON का उपयोग करते हैं, तो यह सही तरीके से दिखा रहा है:

 public class DrivingDirectionActivity extends MapActivity { Point p1 = new Point(); Point p2 = new Point(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MapView mapView = (MapView) findViewById(R.id.map); // setting a default value double src_lat = 18.5535; double src_long = 73.7966; double dest_lat = 18.5535; double dest_long = 73.7966; Geocoder coder = new Geocoder(getApplicationContext(), Locale.getDefault()); List<Address> address_src = null; List<Address> address_dest = null; try { address_src = coder .getFromLocationName( "Deepmala Housing Complex, Pimple Saudagar, Pimpri Chinchwad", 1); if (address_src.size() > 0) { Address loc = address_src.get(0); src_lat = loc.getLatitude(); src_long = loc.getLongitude(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { address_dest = coder.getFromLocationName( "Infosys Phase 2, Hinjewadi Phase II, Hinjewadi", 1); if (address_dest.size() > 0) { Address loc = address_dest.get(0); dest_lat = loc.getLatitude(); dest_long = loc.getLongitude(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mapView.setBuiltInZoomControls(true); 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(13); } protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } private void DrawPath(GeoPoint src, GeoPoint dest, int color, MapView mMapView) { // connect to map web service HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(makeUrl(src, dest)); HttpResponse response; try { response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); InputStream is = null; is = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); sb.append(reader.readLine() + "\n"); String line = "0"; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); reader.close(); String result = sb.toString(); JSONObject jsonObject = new JSONObject(result); JSONArray routeArray = jsonObject.getJSONArray("routes"); JSONObject routes = routeArray.getJSONObject(0); JSONObject overviewPolylines = routes .getJSONObject("overview_polyline"); String encodedString = overviewPolylines.getString("points"); List<GeoPoint> pointToDraw = decodePoly(encodedString); mMapView.getOverlays().add(new MyOverLay(pointToDraw)); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } } private List<GeoPoint> decodePoly(String encoded) { List<GeoPoint> poly = new ArrayList<GeoPoint>(); 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; GeoPoint p = new GeoPoint((int) (((double) lat / 1E5) * 1E6), (int) (((double) lng / 1E5) * 1E6)); poly.add(p); } return poly; } private String makeUrl(GeoPoint src, GeoPoint dest) { // TODO Auto-generated method stub StringBuilder urlString = new StringBuilder(); urlString.append("http://maps.googleapis.com/maps/api/directions/json"); urlString.append("?origin=");// from urlString.append(Double.toString((double) src.getLatitudeE6() / 1.0E6)); urlString.append(","); urlString .append(Double.toString((double) src.getLongitudeE6() / 1.0E6)); urlString.append("&destination=");// to urlString .append(Double.toString((double) dest.getLatitudeE6() / 1.0E6)); urlString.append(","); urlString .append(Double.toString((double) dest.getLongitudeE6() / 1.0E6)); urlString.append("&sensor=false"); Log.d("xxx", "URL=" + urlString.toString()); return urlString.toString(); } class MyOverLay extends Overlay { private int pathColor; private final List<GeoPoint> points; private boolean drawStartEnd; public MyOverLay(List<GeoPoint> pointToDraw) { // TODO Auto-generated constructor stub this(pointToDraw, Color.GREEN, true); } public MyOverLay(List<GeoPoint> points, int pathColor, boolean drawStartEnd) { this.points = points; this.pathColor = pathColor; this.drawStartEnd = drawStartEnd; } private void drawOval(Canvas canvas, Paint paint, Point point) { Paint ovalPaint = new Paint(paint); ovalPaint.setStyle(Paint.Style.FILL_AND_STROKE); ovalPaint.setStrokeWidth(2); ovalPaint.setColor(Color.BLUE); int _radius = 6; RectF oval = new RectF(point.x - _radius, point.y - _radius, point.x + _radius, point.y + _radius); canvas.drawOval(oval, ovalPaint); } public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { Projection projection = mapView.getProjection(); if (shadow == false && points != null) { Point startPoint = null, endPoint = null; Path path = new Path(); // We are creating the path for (int i = 0; i < points.size(); i++) { GeoPoint gPointA = points.get(i); Point pointA = new Point(); projection.toPixels(gPointA, pointA); if (i == 0) { // This is the start point startPoint = pointA; path.moveTo(pointA.x, pointA.y); } else { if (i == points.size() - 1)// This is the end point endPoint = pointA; path.lineTo(pointA.x, pointA.y); } } Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(pathColor); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); paint.setAlpha(90); if (getDrawStartEnd()) { if (startPoint != null) { drawOval(canvas, paint, startPoint); } if (endPoint != null) { drawOval(canvas, paint, endPoint); } } if (!path.isEmpty()) canvas.drawPath(path, paint); } return super.draw(canvas, mapView, shadow, when); } public boolean getDrawStartEnd() { return drawStartEnd; } public void setDrawStartEnd(boolean markStartEnd) { drawStartEnd = markStartEnd; } } } 

मेरा मानना ​​है कि Google ने नोटिस के बिना अपने प्रलेखित KML का समर्थन करना बंद कर दिया था।

मैंने अपने कोड को माइग्रेट करने के लिए Google स्थानों एपीआई को अपने एक्सएमएल आउटपुट का इस्तेमाल किया।

https://developers.google.com/places/documentation/

-मैंने बस मेरा उत्तर संपादित किया-

हमें इसका सामना करने देता है, गूगल ने अपने सिस्टम को बदल दिया है, हमें उनका पालन करना होगा

इसलिए JSON या XML का उपयोग करने दें

🙂

– संपादित हिस्सा दो –

मैं सिर्फ सबसे अच्छा समाधान पाया, यह JSON का उपयोग करें और पॉलीलाइन में पार्स, तो हम यह कर सकते हैं!

Google मानचित्र API संस्करण अंतर

मार्गों के लिए मानक Google नक्शे लिंक का उपयोग करने से पहले मुझे KML आउटपुट प्राप्त करने का तरीका मिला।

ऐसा लगता है कि Google ऐसे लिंक के लिए संदर्भ का विश्लेषण करता है और अगर यह https://code.google.com तो मानचित्र प्रदर्शित करने के बजाय यह KML संलग्नक उत्पन्न करेगा।

इसलिए, पहले, आपको https://code.google.com पर एक प्रोजेक्ट बनाने की आवश्यकता है। फिर एक टिप्पणी में मार्ग लिंक के साथ एक मुद्दा बनाओ।

अब आप लिंक को टैप कर सकते हैं और KML अटैचमेंट प्राप्त कर सकते हैं।

यहां छवि विवरण दर्ज करें

Android के लिए अब मैं उपयोग कर रहा हूं:

 Intent myIntent = new Intent( android.content.Intent.ACTION_VIEW, Uri.parse( "geo:0,0?q="+ lat +","+ lon ) ); startActivity(myIntent); 

मुझे लगता है कि आईओएस में ऐसा कुछ होना चाहिए।