Android 安卓谷歌地图mysql
我有一个项目,希望显示MySQL数据库中的谷歌地图标记。这是一个跟踪系统。坐标由GPS设备生成并存储在数据库中。用户将单击以更新标记。我不明白logcat中有个错误。这是我的密码 MapActivity.java:Android 安卓谷歌地图mysql,android,mysql,json,android-asynctask,Android,Mysql,Json,Android Asynctask,我有一个项目,希望显示MySQL数据库中的谷歌地图标记。这是一个跟踪系统。坐标由GPS设备生成并存储在数据库中。用户将单击以更新标记。我不明白logcat中有个错误。这是我的密码 MapActivity.java: import android.app.AlertDialog; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import
import android.app.AlertDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
GoogleMap mGoogleMap;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment map = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
map.getMapAsync(this);
final LinearLayout drawer = (LinearLayout) findViewById(R.id.drawer_kuno);
final Button option = (Button) findViewById(R.id.button4);
button = (Button)findViewById(R.id.btn_update);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new RetrieveTask().execute();
}
});
drawer.setVisibility(View.INVISIBLE);
option.setVisibility(View.VISIBLE);
option.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
option.setVisibility(View.INVISIBLE);
drawer.setVisibility(View.VISIBLE);
}
});
drawer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
drawer.setVisibility(View.INVISIBLE);
option.setVisibility(View.VISIBLE);
}
});
}
@Override
public void onMapReady(GoogleMap map) {
LatLng mab = new LatLng(10.6817889, 122.9555016);
map.addMarker(new MarkerOptions().position(mab).title("MAB RENT A CAR OFFICE"));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(mab, 15));
}
private void addMarker (LatLng latlng) {
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latlng);
markerOptions.title(latlng.latitude + "," + latlng.longitude);
mGoogleMap.addMarker(markerOptions);
}
public void onClick_about(View v) {
AlertDialog alertDialog = new AlertDialog.Builder(MapsActivity.this).create();
alertDialog.setTitle("About us:");
alertDialog.setMessage("Mary Sor Estraza, Faith Hope Claire Cuello Jessa Joy Cadigal Angeli Nicole Morales");
alertDialog.setIcon(R.drawable.appicon);
alertDialog.show();
}
private class RetrieveTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground (Void... params) {
String strUrl = "http://127.0.0.1/location_marker_mysql/retrieve.php";
URL url = null;
StringBuffer sb = new StringBuffer();
try {
url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream iStream = connection.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(iStream));
String line = "";
while ((line = reader.readLine()) !=null) {
sb.append(line);
}
reader.close();
iStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
@Override
protected void onPostExecute (String result) {
super.onPostExecute(result);
new ParserTask().execute(result);
}
}
private class ParserTask extends AsyncTask <String, Void, List<HashMap<String, String>>> {
@Override
protected List <HashMap <String, String>> doInBackground (String... params) {
MarkerJSONParser markerParser = new MarkerJSONParser();
JSONObject json = null;
try {
json = new JSONObject(params[0]);
} catch (JSONException e) {
e.printStackTrace();
}
List<HashMap<String, String>> markerList = markerParser.parse(json);
return markerList;
}
@Override
protected void onPostExecute(List<HashMap<String, String>> result) {
for(int i=0; i<result.size();i++){
HashMap<String, String> marker = result.get(i);
LatLng latlng = new LatLng(Double.parseDouble(marker.get("lat")), Double.parseDouble(marker.get("lng")));
addMarker(latlng);
}
}
}
}
导入android.app.AlertDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入com.google.android.gms.maps.CameraUpdateFactory;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.OnMapReadyCallback;
导入com.google.android.gms.maps.SupportMapFragment;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.MarkerOptions;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.HashMap;
导入java.util.List;
公共类MapsActivity扩展了FragmentActivity在MapReadyCallback上的实现{
谷歌地图;
按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_映射);
SupportMapFragment映射=(SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map);
getMapAsync(this);
最终线性布局抽屉=(线性布局)findViewById(R.id.drawer\u kuno);
最终按钮选项=(按钮)findViewById(R.id.button4);
按钮=(按钮)findViewById(R.id.btn\u更新);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
新建RetrieveTask().execute();
}
});
抽屉.设置可见性(视图.不可见);
option.setVisibility(View.VISIBLE);
option.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//TODO自动生成的方法存根
选项.setVisibility(视图.不可见);
抽屉.设置可见性(视图.可见);
}
});
drawer.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//TODO自动生成的方法存根
抽屉.设置可见性(视图.不可见);
option.setVisibility(View.VISIBLE);
}
});
}
@凌驾
已于4月1日公开作废(谷歌地图){
LatLng mab=新LatLng(10.6817889122.9555016);
map.addMarker(新MarkerOptions().position(mab).title(“mab租车办公室”);
移动摄像机地图(CameraUpdateFactory.newLatLngZoom(mab,15));
}
专用空隙添加标记器(LatLng LatLng){
MarkerOptions MarkerOptions=新MarkerOptions();
标记选项位置(板条);
标记选项。标题(纬度+“,”+纬度经度);
mGoogleMap.addMarker(markerOptions);
}
公共void onClick_关于(视图v){
AlertDialog AlertDialog=新建AlertDialog.Builder(MapsActivity.this.create();
setTitle(“关于我们:”);
alertDialog.setMessage(“玛丽·索尔·埃斯特拉扎,信仰·希望·克莱尔·库埃罗·杰西·乔伊·卡迪加尔·安吉丽·妮可·莫拉莱斯”);
alertDialog.setIcon(R.drawable.appicon);
alertDialog.show();
}
私有类RetrieveTask扩展了异步任务{
@凌驾
受保护字符串doInBackground(无效…参数){
字符串strUrl=”http://127.0.0.1/location_marker_mysql/retrieve.php";
URL=null;
StringBuffer sb=新的StringBuffer();
试一试{
url=新url(strUrl);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream iStream=connection.getInputStream();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(iStream));
字符串行=”;
而((line=reader.readLine())!=null){
某人附加(行);
}
reader.close();
iStream.close();
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
使某人返回字符串();
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
新建ParserTask()。执行(结果);
}
}
私有类ParserTask扩展了AsyncTask{
@凌驾
受保护列表doInBackground(字符串…参数){
MarkerJSONParser markerParser=新的MarkerJSONParser();
JSONObject json=null;
试一试{
json=新的JSONObject(参数[0]);
}捕获(JSONException e){
e、 printStackTrace();
}
List markerList=markerParser.parse(json);
返回标记列表;
}
@凌驾
受保护的void onPostExecute(列表结果){
对于(int i=0;i
09-29 04:54:40.231 1510-1521/com.google.process.gapps E/StrictMode﹕ A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'end' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:184)
at java.util.zip.Inflater.<init>(Inflater.java:82)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:96)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
at com.android.okhttp.internal.http.HttpEngine.initContentStream(HttpEngine.java:468)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:666)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136)
at com.google.android.gms.http.GoogleHttpClient.a(SourceFile:811)
at com.google.android.gms.http.GoogleHttpClient.a(SourceFile:776)
at com.google.android.gms.http.GoogleHttpClient.execute(SourceFile:667)
at com.google.android.gms.auth.be.w.a(SourceFile:104)
at com.google.android.gms.auth.be.w.a(SourceFile:67)
at com.google.android.gms.auth.be.appcert.a.a(SourceFile:298)
at com.google.android.gms.auth.be.appcert.a.a(SourceFile:134)
at com.google.android.gms.auth.be.appcert.b.a(SourceFile:43)
at com.google.android.gms.auth.c.b.a(SourceFile:62)
at com.google.android.gms.auth.c.a.a(SourceFile:120)
at com.google.android.gms.auth.c.a.a(SourceFile:61)
at
com.google.android.gms.auth.be.cron.AuthCronService.a(SourceFile:44)
at com.google.android.gms.gcm.am.run(SourceFile:135)