我可以从一个外部库导入和编辑代码吗? (例如 google-maps-utils)

Posted

技术标签:

【中文标题】我可以从一个外部库导入和编辑代码吗? (例如 google-maps-utils)【英文标题】:Can i import and edit code from one external library ? (e.g. google-maps-utils) 【发布时间】:2018-05-18 13:43:51 【问题描述】:

我正在使用 google-maps-utils(仅标记聚类)并且代码是只读的。

dependencies 
    compile 'com.google.maps.android:android-maps-utils:0.5+'

我想在 ClusterManager.java

中评论 3 行
    /**
     * Might re-cluster.
     */
    @Override
    public void onCameraIdle() 
        if (mRenderer instanceof GoogleMap.OnCameraIdleListener) 
            ((GoogleMap.OnCameraIdleListener) mRenderer).onCameraIdle();
        

        // Don't re-compute clusters if the map has just been panned/tilted/rotated.
        CameraPosition position = mMap.getCameraPosition();
//        if (mPreviousCameraPosition != null && mPreviousCameraPosition.zoom == position.zoom) 
//            return;
//        
        mPreviousCameraPosition = mMap.getCameraPosition();

        cluster();
    
    我可以将此代码导入我的应用程序并编辑这些行吗? 如果是,我该怎么做? (一步一步)

我正在尝试导入模块,但我做错了。

【问题讨论】:

创建一个扩展 ClusterManager 的类,@Override 方法,复制粘贴原始代码并删除不需要的行。如果这个类被更高级别的类在库中使用,事情会变得非常困难,我无法帮助你 谢谢!有用。写答案以设置正确答案。 【参考方案1】:

如果这是一个您将直接使用的高级类,您可以简单地扩展该类并覆盖该方法:

public class MyClusterManager<T extends ClusterItem> extends ClusterManager<T> 
  @Override
  public void onCameraIdle() 
    if (mRenderer instanceof GoogleMap.OnCameraIdleListener) 
      ((GoogleMap.OnCameraIdleListener) mRenderer).onCameraIdle();
    
    CameraPosition position = mMap.getCameraPosition();
    mPreviousCameraPosition = mMap.getCameraPosition();
    cluster();
  

然后:

ClusterManager<MyClusterItem> clusterManager = new MyClusterManager<MyClusterItem>();
// do something with your own clusterManager ...

【讨论】:

以上是关于我可以从一个外部库导入和编辑代码吗? (例如 google-maps-utils)的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm 导入外部库

外部表可以与本地表同名吗?

我可以使用 sass 导入外部托管的文件吗?

如何从 C# 导入和使用非托管 C++ 类?

从外部类型库导入 IDL 中的接口

我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?