2017-02-17 23 views
-1

Я создаю приложение в андроид-студии в основном своего рода приложение, которое покажет много маркеров пользователю, маркеры также создаются пользователями.андроидные маркеры из базы данных с использованием php и mysql, что является лучшим методом

В основном это мой первый раз с андроид-студией, и я не хочу испортить вещи и размещать здесь вопрос, чтобы я мог получить голос опыта и быть осторожным при разработке кода.

Мое приложение будет использовать PHP-страницу для сохранения данных и извлечения данных из базы данных MySQL, я просто хочу знать, как пользователь будет расти так же указатели, что это лучший способ вызвать тот указатель в моем приложении,

Json? или есть какой-либо другой способ, я могу это сделать, лучшая практика, учитывая, что будет много маркеров.

Это хорошая идея ограничить маркеры в окне зрения, увеличивает ли код код загрузки на сервере или сколько времени потребуется, чтобы загрузить дополнительные данные при перемещении экрана.

Если я загружаю все маркеры в одно и то же время, есть ли вероятность запаздывания и использования ресурса телефона и сервера?

Я считаю, что вы, ребята, будете вести меня наилучшей практикой, которую я могу использовать, спасибо.

ответ

0

Вы можете использовать JSON данные с широтой значения долготы:

[ 
    { 
     "name": "New York", 
     "latlng": [ 
      62.457434, 
      17.349869 
     ], 
     "population": "123" 
    }, 
    { 
     "name": "Dhaka", 
     "latlng": [ 
      62.455102, 
      17.345599 
     ], 
     "population": "132" 
    }, 
] 

лучше загрузить все данные маркеров во время загрузки карты, потому что, если и хотят загрузить данные, основанные на местоположении карты пользователя изменить его призовет сеть api в каждый момент использует touch на карте, которая будет отставать от пользовательского интерфейса.

вы можете загрузить все данные в рабочий поток, так как это сетевая операция. поэтому пользовательский интерфейс не будет медленным.

Вот пример кода:

public class MainActivity extends FragmentActivity { 
    private static final String LOG_TAG = "ExampleApp"; 

    private static final String SERVICE_URL = "YOUR SERVICE URL"; 

    protected GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setUpMapIfNeeded(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     setUpMapIfNeeded(); 
    } 

    private void setUpMapIfNeeded() { 
     if (map == null) { 
      map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
        .getMap(); 
      if (map != null) { 
       setUpMap(); 
      } 
     } 
    } 

    private void setUpMap() { 
     // Retrieve the city data from the web service 
     // In a worker thread since it's a network operation. 
     new Thread(new Runnable() { 
      public void run() { 
       try { 
        retrieveAndAddCities(); 
       } catch (IOException e) { 
        Log.e(LOG_TAG, "Cannot retrieve cities", e); 
        return; 
       } 
      } 
     }).start(); 
    } 

    protected void retrieveAndAddCities() throws IOException { 
     HttpURLConnection conn = null; 
     final StringBuilder json = new StringBuilder(); 
     try { 
      // Connect to the web service 
      URL url = new URL(SERVICE_URL); 
      conn = (HttpURLConnection) url.openConnection(); 
      InputStreamReader in = new InputStreamReader(conn.getInputStream()); 

      // Read the JSON data into the StringBuilder 
      int read; 
      char[] buff = new char[1024]; 
      while ((read = in.read(buff)) != -1) { 
       json.append(buff, 0, read); 
      } 
     } catch (IOException e) { 
      Log.e(LOG_TAG, "Error connecting to service", e); 
      throw new IOException("Error connecting to service", e); 
     } finally { 
      if (conn != null) { 
       conn.disconnect(); 
      } 
     } 

     // Create markers for the city data. 
     // Must run this on the UI thread since it's a UI operation. 
     runOnUiThread(new Runnable() { 
      public void run() { 
       try { 
        createMarkersFromJson(json.toString()); 
       } catch (JSONException e) { 
        Log.e(LOG_TAG, "Error processing JSON", e); 
       } 
      } 
     }); 
    } 

    void createMarkersFromJson(String json) throws JSONException { 
     // De-serialize the JSON string into an array of city objects 
     JSONArray jsonArray = new JSONArray(json); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      // Create a marker for each city in the JSON data. 
      JSONObject jsonObj = jsonArray.getJSONObject(i); 
      map.addMarker(new MarkerOptions() 
       .title(jsonObj.getString("name")) 
       .snippet(Integer.toString(jsonObj.getInt("population"))) 
       .position(new LatLng(
         jsonObj.getJSONArray("latlng").getDouble(0), 
         jsonObj.getJSONArray("latlng").getDouble(1) 
       )) 
      ); 
     } 
    } 
} 
+0

@Ubaid Rehman ответ не помог? – rafsanahmad007