简体   繁体   English

如何在Android的Google Map Marker中添加搜索位置图像

[英]How to add search place image in google map marker in android

My Concept is that, when search place in google map this place image is add in marker, marker is image view, i am use serch location code from this link http://wptrafficanalyzer.in/blog/android-geocoding-showing-user-input-location-on-google-map-android-api-v2/ and in this code use owen marker that is image view. 我的概念是,当在Google地图中搜索该位置图像时,该位置图像被添加到标记中,标记是图像视图,我正在使用此链接中的Serch位置代码http://wptrafficanalyzer.in/blog/android-geocoding-showing-user -input-location-on-google-map-android-api-v2 /,并且在此代码中使用作为图像视图的标记。 so how i can add image 所以我如何添加图像

public class GeocoderTask extends AsyncTask>{ 公共类GeocoderTask扩展了AsyncTask> {

    @Override
    protected List<Address> doInBackground(String... locationName) {
        // Creating an instance of Geocoder class
        Geocoder geocoder = new Geocoder(getBaseContext());
        List<Address> addresses = null;

        respo=myServiceToHttp.makeServiceCall("https://maps.googleapis.com/maps/api/place/textsearch/json?query="+addresses+"&key=Your Server KEy", MyServiceToHttp.GET);
        System.out.println("MyGeocoderTask.doInBackground()------Image---->"+respo);

        try {

            String placeid=null;

            JSONObject jsonObject=new JSONObject(respo);

            JSONArray array=jsonObject.getJSONArray("results");
            //System.out.println("GeocoderTask.doInBackground()---------->"+array);

            for (int j = 0; j < array.length(); j++) {

                JSONObject jsonObject2= array.getJSONObject(j);

                placeid=jsonObject2.getString("place_id");

                System.out.println("GeocoderTask.doInBackground()------PlaceID-->"+placeid);

                respo2=myServiceToHttp.makeServiceCall("https://maps.googleapis.com/maps/api/place/details/json?placeid="+placeid+"&key=Your Server KEy", MyServiceToHttp.GET);

                System.out.println("Response2-->>>>" +respo2);
            }


        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }



        try {


            // Getting a maximum of 3 Address that matches the input text
            addresses = geocoder.getFromLocationName(locationName[0],4);


        }catch (IOException e) {
            e.printStackTrace();
        }
        return addresses;
    }


    @Override
    protected void onPostExecute(List<Address> addresses) {

        if(addresses==null || addresses.size()==0){
            Toast.makeText(getBaseContext(), "No Location found", Toast.LENGTH_SHORT).show();
        }

        // Clears all the existing markers on the map
        googleMap.clear();

        // Adding Markers on Google Map for each matching address
        for(int i=0;i<addresses.size();i++){


            Address address  = (Address) addresses.get(i);

            // Creating an instance of GeoPoint, to display in Google Map
            latLng = new LatLng(address.getLatitude(), address.getLongitude());


             String addressText = String.format("%s, %s, %s,%s",
                       address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(1) : "",
                       address.getThoroughfare(),
                        // Locality is usually a city
                        address.getLocality(),
                        // The country of the address
                        address.getCountryName());

            marker = new MarkerOptions();
            marker.position(latLng);
            marker.title(addressText);


            //googleMap.addMarker(marker);

            // Locate the first location
            if(i==0)
                googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
        }



    }
}

Just try this : 试试这个:

 // Uses a custom icon.
    mIndia = mMap.addMarker(new MarkerOptions()
        .position(SYDNEY)
        .title("Sydney")
        .snippet("Population: 4,627,300")
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

As this just replaces the marker with an image you might want to use a Canvas to draw more complex and fancier stuff:

Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(80, 80, conf);
Canvas canvas1 = new Canvas(bmp);

// paint defines the text color,
// stroke width, size
Paint color = new Paint();
color.setTextSize(35);
color.setColor(Color.BLACK);

//modify canvas
canvas1.drawBitmap(BitmapFactory.decodeResource(getResources(),
    R.drawable.user_picture_image), 0,0, color);
canvas1.drawText("User Name!", 30, 40, color);

//add marker to Map
mMap.addMarker(new MarkerOptions().position(USER_POSITION)
    .icon(BitmapDescriptorFactory.fromBitmap(bmp))
    // Specifies the anchor to be at a particular point in the marker image.
    .anchor(0.5f, 1));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM