Android 및 Google지도가 다운 됨 mapview를로드하는 탭 뷰가 있는데 내 휴대 전화에서 코드를 테스트 할 때 작동하지만 APK를 내 보내어 클라이언트에게 전송하면 파일을 열 때 충돌이 발생합니다. . 그들은 국가의 다른 지역에 있으므로 유용한 정보를 얻지 못했습니다. 의 minSdkVersion = "7"매니페스트에 :클라이언트 전화에서
내 전화는 내가 안드로이드 사용하고 자신의 휴대 전화는 2.3.4
를 실행
2.2.1을 실행 중입니다.
Google api libs 2.3.3의 다양한 버전을 사용해 보았지만 Google에서는 작동하지 않지만 Google에서는 작동하지 않습니다.
나머지 응용 프로그램이 작동하지만지도가 충돌합니다.
3.0 이상은 어떤 이유로 든 광산에서 충돌합니다. 모든 아이디어를 주시면 감사하겠습니다
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
}
:
여기지도 클래스입니다. 나는 아직지도를 많이 사용하지 않았다.
감사
logcat에 오류가 있습니까? –
확인. 버그 센스를 추가하고 위치에 널 포인터가 있습니다. double longitude = location.getLongitude(); – legoist
당신이 방금 당신 자신의 질문에 대답했다고 생각합니다. –