OpenLayers 3 中的功能 ID 未定义
Feature ID's in OpenLayers 3 are undefined
在 OL2 中,功能 ID 是在内部生成的。在 OL3 中,情况似乎并非如此,因为 id 未定义。我已尝试使用 WKT、JSON 和 KML 来源,其中 none 已将 ID 分配给要素。内部功能 ID 是否已从 OL3 中删除?如果不是,我需要做什么才能生成 id。我通过以下方式请求 ID:
feature.getId();
这是拖放的真正问题,因为我无法控制文件。
干杯
不,OL3 不生成任何功能 ID。
在读取特征时,如果根据格式的语义定义,则每个格式都可以设置特征ID。对于 GeoJSON,它是特征的 "id" 成员(不是 属性)。
创建新功能时,应用程序有责任根据需要设置功能 ID。使用特征的 setId
方法。如果使用 Draw 交互,drawend
事件可能会有用。
您还应注意 OL3 中有关功能 ID 的这些事实:
具有重复 ID 的要素不得位于同一来源中。如果将特征添加到存在具有相同 ID 的特征的源,则新特征将被忽略。
功能 ID 作为字符串进行比较,因此 1234
和 "1234"
被视为相等。
根据每种格式的功能标识符规范对功能进行序列化时包含 ID。
在 OL2 中,功能 ID 是在内部生成的。在 OL3 中,情况似乎并非如此,因为 id 未定义。我已尝试使用 WKT、JSON 和 KML 来源,其中 none 已将 ID 分配给要素。内部功能 ID 是否已从 OL3 中删除?如果不是,我需要做什么才能生成 id。我通过以下方式请求 ID:
feature.getId();
这是拖放的真正问题,因为我无法控制文件。
干杯
不,OL3 不生成任何功能 ID。
在读取特征时,如果根据格式的语义定义,则每个格式都可以设置特征ID。对于 GeoJSON,它是特征的 "id" 成员(不是 属性)。
创建新功能时,应用程序有责任根据需要设置功能 ID。使用特征的 setId
方法。如果使用 Draw 交互,drawend
事件可能会有用。
您还应注意 OL3 中有关功能 ID 的这些事实:
具有重复 ID 的要素不得位于同一来源中。如果将特征添加到存在具有相同 ID 的特征的源,则新特征将被忽略。
功能 ID 作为字符串进行比较,因此 1234
和 "1234"
被视为相等。
根据每种格式的功能标识符规范对功能进行序列化时包含 ID。