Note that there are some explanatory texts on larger screens.

plurals
  1. POError plotting coordinates from web service in Android
    primarykey
    data
    text
    <p>I am writing an application that retrieves coordinates from a webservice, then plots them on a map together with my current location: I am able to write the code wich does not have any error but when i run it on the emulator it crashes....what could be the problem: Here is the code:</p> <pre><code>public abstract class MapActivity extends com.google.android.maps.MapActivity{ // Instance attributes private MapView mapView = null; private MapController mc = null; private GeoPoint p = null; private LocationManager locationManager; private LocationListener locationListener; @Override protected void onDestroy() { super.onDestroy(); } public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_3: mc.zoomIn(); break; case KeyEvent.KEYCODE_1: mc.zoomOut(); break; } return super.onKeyDown(keyCode, event); } public void initMap(){ // Get the main element mapView = (MapView) findViewById(R.id.mapView); mc = mapView.getController(); // Add a zoom mapView.setBuiltInZoomControls(true); mapView.displayZoomControls(true); // Initialize the zoom level mc = mapView.getController(); mc.setZoom(17); //---Add a location marker--- MapOverlay mapOverlay = new MapOverlay(); List&lt;Overlay&gt; listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay); mapView.invalidate(); } public void drawElements(MapView mapView, Canvas canvas, String element){ if (mapView == null){ return; } try { // Get elements JSONObject elements = JSONfunctions.getJSONfromURL("http://10.0.2.2/android/rental.php"); JSONArray results = elements.getJSONArray("rental"); if (results != null &amp;&amp; results.length() != 0){ for (int i = 0; i &lt; elements.length(); i++) { JSONObject result = results.getJSONObject(i); //---fetch the coordinates from the remote server------ double lat = Double.parseDouble((String) result.get("lat")); double lon = Double.parseDouble((String) result.get("lon")); //---translate the GeoPoint to screen pixels--- Point screenPts = new Point(); GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6)); mapView.getProjection().toPixels(p, screenPts); //---add the marker--- Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.red); canvas.drawBitmap(bmp, screenPts.x-20, screenPts.y-40, null); } } } catch (JSONException e) { Log.e(null,"JSONException error"); } } /** * Re-center the icon on the map */ public void refreshMapLocation(){ locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new GPSLocationListener(); locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,0, 0,locationListener); } private class GPSLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { GeoPoint p = new GeoPoint( (int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6)); // Animate the map on the point if (p != null &amp;&amp; mc !=null){ mc.animateTo(p); } else { Log.e(null,"Couldn't refresh location on the map"); } } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } protected boolean isRouteDisplayed() { return false; } /** * Map overlay */ class MapOverlay extends com.google.android.maps.Overlay { @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); if (p != null){ //---translate the GeoPoint to screen pixels--- Point screenPts = new Point(); mapView.getProjection().toPixels(p, screenPts); //---add the marker--- Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.blue); canvas.drawBitmap(bmp, screenPts.x-10, screenPts.y-20, null); } //drawElements(mapView,canvas,"Hospitals"); return true; } } } </code></pre> <p>edit.<em>*</em>* On looking at the error posted by Logcat this is what it has to say</p> <pre><code>11-20 09:10:31.931: I/Process(756): Sending signal. PID: 756 SIG: 9 11-20 09:39:57.001: D/dalvikvm(789): newInstance failed: p0 i0 [0 a1 11-20 09:39:57.001: D/AndroidRuntime(789): Shutting down VM 11-20 09:39:57.041: W/dalvikvm(789): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 11-20 09:39:57.091: E/AndroidRuntime(789): FATAL EXCEPTION: main 11-20 09:39:57.091: E/AndroidRuntime(789): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.jkuat.project/com.jkuat.project.MapActivity}: java.lang.InstantiationException: com.jkuat.project.MapActivity 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.os.Handler.dispatchMessage(Handler.java:99) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.os.Looper.loop(Looper.java:123) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.ActivityThread.main(ActivityThread.java:4627) 11-20 09:39:57.091: E/AndroidRuntime(789): at java.lang.reflect.Method.invokeNative(Native Method) 11-20 09:39:57.091: E/AndroidRuntime(789): at java.lang.reflect.Method.invoke(Method.java:521) 11-20 09:39:57.091: E/AndroidRuntime(789): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 11-20 09:39:57.091: E/AndroidRuntime(789): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-20 09:39:57.091: E/AndroidRuntime(789): at dalvik.system.NativeStart.main(Native Method) 11-20 09:39:57.091: E/AndroidRuntime(789): Caused by: java.lang.InstantiationException: com.jkuat.project.MapActivity 11-20 09:39:57.091: E/AndroidRuntime(789): at java.lang.Class.newInstanceImpl(Native Method) 11-20 09:39:57.091: E/AndroidRuntime(789): at java.lang.Class.newInstance(Class.java:1429) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 11-20 09:39:57.091: E/AndroidRuntime(789): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 11-20 09:39:57.091: E/AndroidRuntime(789): ... 11 more </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload