2

私はこのようなものを実装したいと思います:

私が持っているもの 私はJSONデータlatlng値を持っています、そして私はこれらすべてを入れましたHashmap、私はそれとその働きをしました

必要なもの これらの保存された値latlng値を、より多くのマーカーを使用してGoogleマップに配置するにはどうすればよいですか?

JSONデータを解析するためのこのコードがあります

    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
    JSONParser jParser = new JSONParser();
    JSONArray json = jParser.getJSONFromUrl(url);
    try {
           for(int i = 0; i < json.length(); i++){
                JSONObject c = json.getJSONObject(i);

                String lat = c.getString(TAG_LAT);
                String lng = c.getString(TAG_LNG);



            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value
            map.put(TAG_LAT, lat);
            map.put(TAG_LNG, lng);

            // adding HashList to ArrayList
            contactList.add(map);
           }
    } catch (JSONException e) {
        e.printStackTrace();
        Log.e("JSON Parser", "Error parsing data " + e.toString());

    }

問題

どこから始めればいいのかわからないのですが、どうすれば複数のマーカーをGoogleマップに入れることができますか?

        SupportMapFragment mapFrag=
                    (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
            initListNav();
            map=mapFrag.getMap();

            CameraUpdate center=
                    CameraUpdateFactory.newLatLng(latvalue, lngvalue);

            CameraUpdate zoom=CameraUpdateFactory.zoomTo(13);

            map.moveCamera(center);
            map.animateCamera(zoom);

            addMarker(map, latvalue , lngvalue);
4

2 に答える 2

2

これが問題であるよりも、配列を反復処理していますか。

for (HashMap<String, String> hashMap : contactList) {
    map.addMarker(new MarkerOptions()
      .position(new LatLng(hashMap.get(TAG_LAT) , hashMap.get(TAG_LNG)))
      .title("Another marker"));
}

編集:

    mMap = ((SupportMapFragment) 
    getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

    ArrayList<LatLng> contactList = new ArrayList<LatLng>();

    contactList.add(new LatLng(48.8742, 2.3470));
    contactList.add(new LatLng(0, 0));

    for (LatLng latLon : contactList) {
        mMap.addMarker(new MarkerOptions().position(latLon).title("Another marker"));
    }

編集2:ハッシュマップと同じ

ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

//Paris
{
    // creating new HashMap
    HashMap<String, String> map = new HashMap<String, String>();

    // adding each child node to HashMap key => value
    map.put(TAG_LAT, "48.8742");
    map.put(TAG_LNG, "2.3470");

    // adding HashList to ArrayList
contactList.add(map);
}

//London
{
    // creating new HashMap
    HashMap<String, String> map = new HashMap<String, String>();

    // adding each child node to HashMap key => value
    map.put(TAG_LAT, "51.5171");
    map.put(TAG_LNG, "0.1062");

    // adding HashList to ArrayList
    contactList.add(map);
}

for (HashMap<String, String> hashMap : contactList) {
    mMap.addMarker(new MarkerOptions()
        .position(new LatLng(Double.parseDouble(hashMap.get(TAG_LAT)) ,        
            Double.parseDouble(hashMap.get(TAG_LNG))))
        .title("Another marker"));
}

EDIT 3 、マーカークリックでコールバックを取得する方法:

mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

    @Override
    public boolean onMarkerClick(Marker arg0) {
        Log.e("onMarkerClick", "test: "+arg0.getTitle());
        return false;
    }
});
于 2013-03-05T13:21:16.047 に答える
-1

Google Maps API V2 を使用する必要があります。Google Maps API Demo V2では、マーカーが に追加される様子を確認できますGoogleMap mMap

    // Uses a custom icon.
mSydney = mMap.addMarker(new MarkerOptions()
        .position(SYDNEY)
        .title("Sydney")
        .snippet("Population: 4,627,300"));

この例SYDNEYLatLongポイントで、タイトルとスニペットはカスタム情報ウィンドウ用です。ハッシュマップを調べて、各マーカーをマップに追加するだけです。Marker必ずしも各マーカーを変数に割り当てる必要はありません( の例で行ったようにmSydney)。

于 2013-03-05T13:12:54.110 に答える