Добавить MapView в мою деятельность

#android #mysql #google-maps-android-api-2

#Android #mysql #google-карты-android-api-2

Вопрос:

Пожалуйста, помогите мне, я создал класс newReclamation , в который мы можем добавить имя, тип, описание и позицию запроса с помощью MapView . Как я могу добавить MapView и отметить свою позицию вручную с помощью Marker , а затем сохранить (Lang, широта) в базе данных mysql.

PS: теперь я сохраняю только имя, тип и описание запроса, и это работает. Пожалуйста, помогите мне.

 public class NewReclamationActivity extends Activity implements OnItemSelectedListener {

    // Progress Dialog
    private ProgressDialog pDialog;
    private SQLiteHandler db;

    JSONParser jsonParser = new JSONParser();
    EditText inputName;
    EditText inputDesc;
    Spinner spinner;



    // LogCat tag
    private static final String TAG = NewReclamationActivity.class.getSimpleName();
    // JSON Node names
    private static final String TAG_SUCCESS = "success";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_reclamation);

        spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(this);
// Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.type_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
        spinner.setAdapter(adapter);

        // Edit Text
        inputName = (EditText) findViewById(R.id.inputName);
        inputDesc = (EditText) findViewById(R.id.inputDesc);

        // SqLite database handler
        db = new SQLiteHandler(getApplicationContext());



        // Create button
        Button btnCreateReclamation = (Button) findViewById(R.id.btnCreateReclamation);

        // button click event
        btnCreateReclamation.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // creating new reclamation in background thread
                new CreateNewReclamation().execute();
            }
        });

    }

    public void onItemSelected(AdapterView<?> parent, View view,
                               int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }


    /**
     * Background Async Task to Create new reclamation
     * */
    class CreateNewReclamation extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(NewReclamationActivity.this);
            pDialog.setMessage("Creating Reclamation..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();

        }




        /**
         * Creating reclamation
         * */

        // Fetching user details from SQLite
        HashMap<String, String> user = db.getUserDetails();
        String user_id=user.get("uid");


        String name = inputName.getText().toString();
        String type = spinner.getSelectedItem().toString();
        String description = inputDesc.getText().toString();


        protected String doInBackground(String... args) {


            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("name", name));
            params.add(new BasicNameValuePair("type", type));
            params.add(new BasicNameValuePair("description", description));
            params.add(new BasicNameValuePair("user_id",user_id));

            // getting JSON Object
            // Note that create product url accepts POST method
            JSONObject json = jsonParser.makeHttpRequest(AppConfig.url_create_reclamation,
                    "POST", params);

            // check log cat fro response
            Log.d("Create Response", json.toString());

            // check for success tag
            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // successfully created reclamation
                    Intent i = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(i);

                    // closing this screen
                    finish();
                } else {
                    // failed to create reclamation
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once done
            pDialog.dismiss();
        }

    }
  

Я хочу добавить местоположение с помощью карты Google. Пожалуйста, есть идеи?

Комментарии:

1. Мы не сможем вам помочь, пока вы не поделитесь с нами своим кодом

2. я отредактировал свою публикацию, теперь вы можете найти мой код. я хочу добавить позицию с помощью Google Maps и сохранить ее в базе данных

3. Вы должны начать отсюда: developers.google.com/maps/documentation/android-api/start потому что вам нужно внедрить карты Google, прежде чем вы сможете получить местоположение от пользователя.

4. спасибо, но должен ли я создать новую активность Google Maps?

5. да, вы можете. но мне будет проще, если вместо этого вы просто используете MapView . Вот демонстрация того, как вы можете его использовать: gist.github.com/joshdholtz/4522551

Ответ №1:

Google предоставил действительно четкое руководство для разработчиков, чтобы начать работу с Maps API для Android.

Посмотрите здесь, как сгенерировать необходимый ключ API.

Не забудьте получить ключ API, иначе это не сработает

Вот XML фрагмент для карты

 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@ id/map"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" />
  

и вот фрагмент для начинающих, чтобы начать

 import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
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;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney, Australia, and move the camera.
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}
  

Надеюсь, это поможет

Комментарии:

1. является ли это платной услугой

2. @Aishik kirtaniya в прошлый раз, когда я проверял, это было бесплатно до определенного количества запросов. Ie. Если это для небольшого проекта, он, вероятно, будет бесплатным, пока он остается небольшим. Однако вам следует проверить наличие обновленной информации. Просто погуглите «Android Google Maps цена»

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