2017-02-14 7 views
0

Eine Aktivität (MainActivity) ruft ein Fragment (MainPage) auf. Das Fragment wurde entwickelt, um eine lokale Asset-Webview-Datei namens Map.html zu öffnen. Es funktioniert wie vorgesehen, mit der Ausnahme, dass die Karte nicht mit der Fingerspitze bewegt werden kann. Diese Funktion ist verfügbar, wenn die Map.html eine Broswers geöffnet ist. Die Zoom-In-Zoom-Out-Schaltfläche oben links funktioniert jedoch.Karte in Webansicht nicht verschieben

Liegt etwas über dem Webview, so dass es sichtbar, aber nicht überstrichen ist?

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    //list of private declarations 

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

    // a lot of other stuff relating to navigation drawer 

    // calls MainPage Fragment 
    android.support.v4.app.Fragment fragment = new MainPage(); 
       FragmentManager fragmentManager = getSupportFragmentManager(); 
       fragmentManager.beginTransaction() 
         .replace(R.id.content_frame, fragment) 
         .addToBackStack("tag") 
         .commit(); 
    } 
} 

wo die XML-Code für diese gegeben ist als:

Map Screenshot

Die anfängliche AppCompatActivity (zur Unterstützung ActionBar) durch MainActivity gegeben

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_centerVertical="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <android.support.v4.widget.DrawerLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <WebView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/content_frame"> 
    </WebView> 

     <ListView 
      android:id="@+id/left_drawer" 
      android:layout_width="240dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" 
      android:background="#111"> 
     </ListView> 

    </android.support.v4.widget.DrawerLayout> 

</LinearLayout> 

Schließlich Mainpage fordert, gegeben wie:

public class MainPage extends android.support.v4.app.Fragment implements GeolocationPermissions.Callback { 

    public MainPage() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.activity_main, container, false); 
     WebView webview = (WebView) rootView.findViewById(R.id.content_frame); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     webview.getSettings().setGeolocationEnabled(true); 
     GeoClient geo = new GeoClient(); 
     webview.setWebChromeClient(geo); 
     String origin = ""; 
     geo.onGeolocationPermissionsShowPrompt(origin, this); 
     webview.loadUrl("file:///android_asset/Map.html"); 
     return rootView; 
    } 

Antwort

0

Möglicherweise müssen Sie einen onclicklistener einrichten. Für Google Maps habe ich das so gemacht. Es ist wahrscheinlich ähnlich.

Fügen Sie die Utensilien, die @ override-Funktion hinzu, und legen Sie den onclick-Listener fest. Ich bin nicht sicher, ob dies funktioniert, da Sie HTML irgendwann verwenden.

public class MainActivity extends FragmentActivity implements View.OnClickListener, 
     GoogleMap.OnMapClickListener { 

Dann, wenn Sie es initiieren, setzen Sie den Onmap-Klick-Listener.

gMap.setOnMapClickListener(this);// add the listener for click on gmap object 

Schließlich, fügen Sie diesen @Override:

@Override 
public void onMapClick(LatLng point) { 
//What code if any happens when user clicks on map 
}