如何在android中使用php添加多个标记

Posted

技术标签:

【中文标题】如何在android中使用php添加多个标记【英文标题】:How add multiple markers using php in android 【发布时间】:2019-03-14 02:32:57 【问题描述】:

裸露我的英语

代码:

public class Map extends FragmentActivity implements OnMapReadyCallback 

private GoogleMap mMap;
double lat;
double longi;
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_map );
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById( R.id.map );
    mapFragment.getMapAsync( this );

@Override
public void onMapReady(GoogleMap googleMap) 
    new Getplace().execute();
    mMap = googleMap;



private class Getplace extends AsyncTask<String, Void, String> 

    public static final int CONNECTION_TIMEOUT = 10000;
    public static final int READ_TIMEOUT = 15000;
    HttpURLConnection conn;
    URL url = null;

    @Override
    protected String doInBackground(String... strings) 

        try 
            url = new URL( "http://localhost:8089/location.php" );
         catch (MalformedURLException e) 
            e.printStackTrace();
        

        try 
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout( READ_TIMEOUT );
            conn.setConnectTimeout( CONNECTION_TIMEOUT );
            conn.setRequestMethod( "POST" );
            // setDoOutput to true as we recieve data from json file
            conn.setDoOutput( true );
         catch (IOException e) 
            e.printStackTrace();
        

        try 

            int response_code = conn.getResponseCode();

            // Check if successful connection made
            if (response_code == HttpURLConnection.HTTP_OK) 

                // Read data sent from server
                InputStream input = conn.getInputStream();
                BufferedReader reader = new BufferedReader( new InputStreamReader( input ) );
                StringBuilder result = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) 
                    result.append( line );
                

                // Pass data to onPostExecute method
                return (result.toString());

             else 

                return ("unsuccessful");
            

         catch (IOException e) 
            e.printStackTrace();
            return e.toString();
         finally 
            conn.disconnect();
        
        
    @Override
    protected void onPreExecute() 
    
    @Override
    protected void onPostExecute(String result) 
        Log.e( TAG,"result"+result );
        try 
            JSONArray row = new JSONArray( result );
            for(int i=0;i<row.length();i++)
                JSONObject data = row.getJSONObject(i);
                lat = data.getDouble( "latitude" );
                longi = data.getDouble( "longitude" );
                LatLng sydney = new LatLng( lat, longi );

                mMap.addMarker( new MarkerOptions().position( sydney ));
            
        catch (JSONException e) 
        
    

php代码:

<?php

$host='localhost';

$uname='root';

$pwd='';

$db="nikhil";

$con = mysqli_connect($host,$uname,$pwd,$db);

if (!$con) 
die("Connection failed: " . mysqli_connect_error());



$query=mysqli_query($con, "select * from Location"); 

while($row=mysqli_fetch_array($query))

$flag[]=$row;

echo json_encode(array($flag));  //json output

mysqli_close($con);
?>

结果:

1.纬度:23.8103,经度:90.4125

2。纬度:22.7010,经度:90.3535

3.纬度:23.6,经度:89.8333333

我想在我的地图中添加多个标记。

我为它编写的代码,我得到的地图没有任何标记。 我可以正确地得到我的经度和纬度,但我猜他们没有被分配给标记。

还有一件事:

Log.e( TAG,"No :"+i+" Latitue :"+lat );

我在我的 logcat 中看不到这一行所以我的 for 循环中可能有错误

谁能让我摆脱这种情况。

【问题讨论】:

如果您向我们展示您的 PHP 代码 location.php 会很有帮助 lat = data.getDouble( "latitude" ),使用 Double 会使您失去精度,然后无法将标记设置在正确的位置。 看看我现在更新了我的代码@RiggsFolly 谢谢你成功了@RiggsFolly 【参考方案1】:

您正在这一行添加另一层数组

json_encode(array($flag)); 

改成

json_encode($flag); 

除非您明确希望返回的 JSONString 中包含另一层数组

【讨论】:

以上是关于如何在android中使用php添加多个标记的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在谷歌地图中添加带有点击事件的多个标记? [复制]

如何在android中的谷歌地图上绘制路线并计算多个标记之间的距离

在 Google Maps API v2 Android 中添加多个标记

如何在谷歌地图上添加多个标记

用户如何在谷歌地图颤振上添加多个标记

如何在 Android Studio 中删除谷歌地图上多个更新位置的旧标记?