2017-08-30 32 views
0

对不起,我刚开始学习编程。 我在我的应用程序中制作了地图活动,并且有一个搜索框可以查找我之前制作的标记。我的问题是如何从搜索框中在我的地图活动中找到标记?我没有使用数据库,我一个一个地做了一个标记,因为在我的地图中只有10个标记。从地图编辑文本中搜索标记片段android

这里是我的所有标记的内部阵列

Double [] lat = { 
      -7.362366, -7.363552, 
      -7.360093, -7.384362, 
      -7.371319, -7.369428, 
      -7.342803, -7.364069, 
      -7.361312, -7.368688, 
      -7.358674, -7.369610, 
      -7.366610, -7.371556, 
      -7.348831, -7.362575 
    }; 
    Double [] lon = { 
      108.545943, 108.542081, 
      108.605078, 108.533789, 
      108.528442, 108.483738, 
      108.553713, 108.581835, 
      108.533522, 108.534660, 
      108.639087, 108.540899, 
      108.561781, 108.525056, 
      108.633850, 108.537306 
    }; 
    String [] nama ={ 
      "Situ Mustika", 
      "Rest area banjar atas", 
      "Kolam Mandalare", 
      "Dinding Sumanding", 
      "Lembah Pejamben", 
      "Situ Leutik", 
      "Pulo Majeti", 
      "Situs Kokoplak", 
      "Banjar Islamic Center", 
      "Taman kota Lapang Bakti", 
      "Alun alun Langensari", 
      "Alun alun Patroman", 
      "Taman Dobo", 
      "Taman Pintu singa", 
      "Langensari Sport Center", 
      "Banjar Waterpark" 
    }; 
    for(int i = 0; i < lat.length; i++) 
    { 
     myMap.addMarker(new MarkerOptions() 
       .position(new LatLng(lat[i], lon[i])) 
       .title(nama[i]) 
       .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 
    } 

现在我可以显示我的地图上的标记,但我想要做的就是从EditText搜索一下有没有什么函数或过程类似onClick从一个按钮?

这是数组标记的屏幕截图 Marker From array 接下来应该怎么做?

回答

0

尝试以下代码。此方法GoogleMap.addMarker()返回已添加的标记。将您的标记保存到列表中。

List<Marker> list = new ArrayList<Marker>(); 

    for(int i = 0; i < Lat.length; i++) 
    { 
    Marker marker = map.addMarker(new MarkerOptions() 
     .position(new LatLng(Lat[i], Lon[i])) 
     .title(Market[i]) 
     .snippet(Address[i]) 
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 
    list.add(marker); 
    } 

现在搜索符合您的条件的标记(这里是代码段)。

for(Marker m : list) { 
    if(m.getSnippet().equals(yourSnippet)) { 
     // move google map to focus on marker 
     break; // stop the loop 
    } 
} 

另一种方式:

searchbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


        for(int i=0; i < nama.length; i++) { 
         if (nama[i].equals(et.getText.toString())) { 
          //Remove old marker 
          oldmarker.remover(); 
          // now inflate new marker like this 
          myMap.addMarker(new MarkerOptions() .position(new LatLng(lat[i], lon[i])) .title(nama[i]) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptor‌​Factory.HUE_BLUE)));‌ 

          CameraPosition camPos = new CameraPosition.Builder() 
            .target(new LatLng(lat[i], lon[i])) 
            .zoom(18) 
            .build(); 
          CameraUpdate camUpd3 = CameraUpdateFactory.newCameraPosition(camPos); 
          googleMap.animateCamera(camUpd3); 

          break; 
         }else 
         { 
          //NOt found any nama . 
         } 
        } 


        ​} 

      }); 

我希望这可以帮助你,

+0

是的,这是工作。但问题是我应该写出确切的名称,如大写和小写 –

+0

嗯......但问题是我应该写出确切的名称,当我想写例如只有第二个词像“林肯公园”,我只写“lincoln”这不会发生 –

+0

@MarkJohnson ok bro,你可以'Spinner' Edittext.or的实例尝试使用AutoCompleteTextView,请参阅https://developer.android.com/reference/android/widget/AutoCompleteTextView.html链接,我希望这会给你一些更好的想法。 –

0

1)创造的10个标记的阵列列表,

2)显示的ArrayList对地图标记

3)搜索到ArrayList和显示搜索数组列表来映射

负载标记的ArrayList映射例如

for (int i = 0; i < result.size(); i++) { 
    MarkerOptions marker = new MarkerOptions().position(
           new LatLng(result.get(i).getShopLat(), result 
             .get(i).getShopLng())).title(
           result.get(i).getShopName()); 
         // Changing marker icon 
         marker.icon(BitmapDescriptorFactory 
           .fromResource(R.drawable.marker)); 

         // adding marker 
         googleMap.addMarker(marker); 

        } 


        LatLng latLong = new LatLng(user.getUserLatitude(), user.getUserLogitude()); 

        CameraPosition cameraPosition = new CameraPosition.Builder() 
          .target(latLong).zoom(19f).tilt(70).build(); 
        googleMap.setMyLocationEnabled(true); 
        googleMap.animateCamera(CameraUpdateFactory 
          .newCameraPosition(cameraPosition));} 

从数组列表搜索Searching in a ArrayList with custom objects for certain strings

和和加载搜索标记。

+0

所以它如何会被执行?我的意思是我应该把所有的代码放在哪里?它在'onMapReady'中吗? –

+0

检查此链接https://stackoverflow.com/questions/28503562/google-maps-marker-array –

+0

serach marker看这一个https://stackoverflow.com/questions/18964164/search-android-map-marker-titles - 和 - 片段 –

相关问题