마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

구글맵 지도 지역검색 오류

0 추천

소스코드는 이러합니다. 해당 지역을 검색하고 찾기 버튼을 누르면 자꾸 원래 위치를 지정했던 곳으로 

계속 이동을 하게 되네요, 이거 .. 어찌 구현을 해야하나요?

package com.example.samsung.google;

import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
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.Marker;

import java.util.List;
import java.util.Locale;
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback  {
MapView mapView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

               final EditText edit = (EditText) findViewById(R.id.edit);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                goLoc(edit.getText().toString());
            }
        });
    }

        public void goLoc(String goLocName) {
            Geocoder gc = new Geocoder(this, Locale.getDefault());
            List<Address> adds;

        try {
            adds = gc.getFromLocationName(goLocName, 1);

            initilizeMap();

            int latitude = (int) (adds.get(0).getLatitude() * 1E6);
            int longitude = (int) (adds.get(0).getLatitude() * 1E6);


        } catch (Exception e){
            e.printStackTrace();
        }
    }



    private void initilizeMap() {
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }



    public void onMapReady(GoogleMap googleMap) {
    googleMap = googleMap;

        LatLng Seoul = new LatLng(37.550947, 126.989296);

        googleMap.moveCamera(CameraUpdateFactory.newLatLng(Seoul));

        CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
        googleMap.animateCamera(zoom);


        if (ActivityCompat.checkSelfPermission
                (this, android.Manifest.permission.ACCESS_COARSE_LOCATION) !=
                PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {



            return;
        }
        googleMap.setMyLocationEnabled(true);
        googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                Toast.makeText(getApplicationContext(), marker.getTitle() + "를 클릭했습니다.", Toast.LENGTH_SHORT).show();
                return false;
            }
        });


    }
}



익명사용자 님이 2017년 5월 20일 질문

1개의 답변

0 추천
goLoc 함수를 살펴보시면

맵 초기화 함수를 타고 있습니다.

 

이 부분은 onMapReady를 같이 실행할 가능성이 있습니다.

초기화는 맵이 표시되는 엑티비티 시작시 한번만 하도록 하면 문제는 해결될 것으로 보입니다.
익명사용자 님이 2017년 5월 22일 답변
...