J'ai une tabview qui charge une mapview et quand je teste le code sur mon téléphone cela fonctionne, mais si j'exporte l'APK et l'envoie au client, il se bloque quand ils l'ouvrent . Ils sont dans une partie différente du pays, donc obtenir des informations utiles sur eux a été limitée.Android et Google Maps se bloque sur le téléphone client
Mon téléphone est en cours d'exécution 2.2.1
Leur téléphone est en cours d'exécution 2.3.4
J'utilise Android: minSdkVersion = "7" dans le manifeste.J'ai essayé d'utiliser diverses versions de Google api libs 2.3.3 fonctionne sur le mien mais pas pour eux Google 2.1 fonctionne sur le mien mais pas le leur.
Le reste de l'application fonctionne, juste les cartes se brisent sur le mien.
3.0 et plus tard tous se brisent sur le mien pour une raison quelconque.
est ici la classe carte:
public class GPSLocatorActivity extends MapActivity implements LocationListener {
private MapView map=null;
private MyLocationOverlay me=null;
private LocationManager lm;
private MyLocationOverlay lo;
private double latit;
private double lonit;
private ArrayList<HashMap<String, String>> thelist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initLocation();
map=(MapView)findViewById(R.id.mapView);
//json stuff
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, myjasonfeedurlString>>();
// Log.e("log_tag", "here we are at url "+latit);
String url = "http://myjsonlocation/json.php?la=" + latit + "&lo=" + lonit;
//Log.e("log_tag", "here is url "+url);
JSONObject json = getJSONfromURL(url);
try{
JSONArray earthquakes = json.getJSONArray("locations");
//Loop the Array
for(int i=0;i < earthquakes.length();i++){
HashMap<String, String> hmap = new HashMap<String, String>();
JSONObject e = earthquakes.getJSONObject(i);
hmap.put("id", String.valueOf(i));
hmap.put("name", e.getString("name"));
hmap.put("latitude", e.getString("lat"));
hmap.put("longitude", e.getString("lon"));
hmap.put("street", e.getString("street"));
//Log.e("log_tag", "Here's what I pulled "+e.getString("name"));
mylist.add(hmap);
}
thelist = mylist;
}
catch(JSONException e) {
// Log.e("log_tag", "Error parsing data "+e.toString());
}
map.getController().setCenter(getPoint(latit,
lonit));
map.getController().setZoom(14);
map.setBuiltInZoomControls(true);
Drawable marker=getResources().getDrawable(R.drawable.ball24);
marker.setBounds(0, 0, marker.getIntrinsicWidth(),
marker.getIntrinsicHeight());
map.getOverlays().add(new SitesOverlay(marker));
me=new MyLocationOverlay(this, map);
map.getOverlays().add(me);
}
@Override
public void onResume() {
super.onResume();
// me.enableCompass();
}
@Override
public void onPause() {
super.onPause();
lo.disableMyLocation();
// me.disableCompass();
}
@Override
protected boolean isRouteDisplayed() {
return(false);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_S) {
map.setSatellite(!map.isSatellite());
return(true);
}
else if (keyCode == KeyEvent.KEYCODE_Z) {
map.displayZoomControls(true);
return(true);
}
return(super.onKeyDown(keyCode, event));
}
private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0),
(int)(lon*1000000.0)));
}
private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items=new ArrayList<OverlayItem>();
public SitesOverlay(Drawable marker) {
super(marker);
boundCenterBottom(marker);
for(int i=0;i < thelist.size();i++){
Map<String, String> hmap = thelist.get(i);
double tlo = Double.valueOf(hmap.get("longitude"));
double tla = Double.valueOf(hmap.get("latitude"));
GeoPoint point = new GeoPoint((int)(tla*1E6),(int)(tlo*1E6));
//Log.e("log_tag","geopoint : " + point +" me "+ (int)(latit*1000000.0) + " , " +(int)(lonit*1000000.0));
items.add(new OverlayItem(point,hmap.get("name"), hmap.get("street")));
}
items.add(new OverlayItem(getPoint(0.748963847316034,
-123.96807193756104),
"blank", "placeholder"));
populate();
}
@Override
protected OverlayItem createItem(int i) {
return(items.get(i));
}
@Override
protected boolean onTap(int i) {
Toast.makeText(GPSLocatorActivity.this,
items.get(i).getTitle() + " @ " + items.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
return(true);
}
@Override
public int size() {
return(items.size());
}
}
private void initLocation(){
lm= (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 500, this);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
// Log.e("log_tag", "lat "+ latitude);
// Log.e("log_tag", "lon: "+ longitude);
latit = latitude;
lonit = longitude;
}
public void onLocationChanged(Location arg0) {
List overlays = map.getOverlays();
lo = new MyLocationOverlay(this,map);
overlays.add(lo);
lo.enableMyLocation();
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
//json
public static JSONObject getJSONfromURL(String url){
//initialize
InputStream is = null;
String result = "";
JSONObject jArray = null;
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
//Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
//Log.e("log_tag", "Error converting result "+e.toString());
}
//try parse the string to a JSON object
try{
jArray = new JSONObject(result);
}catch(JSONException e){
//Log.e("log_tag", "Error parsing data "+e.toString());
}
return jArray;
}
//json
}
Toutes les idées seraient appréciées. Je n'ai pas encore beaucoup travaillé avec les cartes.
Merci
Des erreurs dans logcat? –
OK. J'ai ajouté bugsense et j'ai un pointeur nul sur l'emplacement. à la double longitude = location.getLongitude(); – legoist
Je pense que vous venez de répondre à votre propre question .. –